c++でnvmeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
TRANSCRIPT
![Page 1: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/1.jpg)
1
C++でNVMeと(*´Д`)ハァハァ戯れていたら一年経ってた。
Boost.勉強会 #21 札幌#boostjp
宮崎 典行Twitter: @openlibsyshttp://crystalmark.info/ 49 PAGES
![Page 2: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/2.jpg)
2
自己紹介NVMe についてCrystalDiskMarkCrystalDiskInfoまとめ
![Page 3: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/3.jpg)
3自己紹介
名前:宮崎 典行, hiyohiyo/ひよひよ
年齢:37歳
家族:妻, 愛娘, 愛息子
趣味:ソフトウェア開発 (約17年)
住所:北海道札幌市
代表作: CrystalDiskInfo, CrystalDiskMark 他(通称 Crystal シリーズ)
パソコンがもっと好きになるソフトウェアを一貫して開発しています
Microsoft MVP・Visual C++ (Jan. 2014 – Sep. 2015) ・Visual Studio and Development Technologies (Oct. 2015 -)
![Page 4: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/4.jpg)
4
一枚の画像で表現すると…
![Page 5: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/5.jpg)
5自作ソフトウェア紹介
CrystalDiskInfo CrystalDiskMark
CrystalMark 2004 CrystalCPUID
![Page 6: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/6.jpg)
6Windows Store デビュー!!
Desktop App Converter サイコー
![Page 7: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/7.jpg)
7AmorphousDiskMark
CrystalDiskMark の macOS 版!?
katsura シェアウェアhttp://katsurashareware.com/index-j.html
AmorphousDiskMark by @polydron
![Page 8: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/8.jpg)
8
![Page 9: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/9.jpg)
92016/12/26 札幌C++勉強会にて
http://www.slideshare.net/hiyohiyo/20151228-nvme-sapporocpp
1年間の成果を報告します!!
![Page 10: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/10.jpg)
10
NVM Express
![Page 11: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/11.jpg)
11NVMe とは
NVM Express (NVMe)
SSD 向け次世代インターフェース
最大の特徴
速い!!
![Page 12: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/12.jpg)
12
0 500 1000 1500 2000 2500 3000 3500 4000
NVMe @PCIe 3.0x4
SATA/600
SATA/300
SATA/150
UDMA/100
UDMA/66
UDMA/33
転送レート (MB/s)
![Page 13: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/13.jpg)
13AHCI vs NVMe
ベンチマーカー視点での最重要ポイント
AHCI NVMe
Queue 1 64KCommands/Queue 32 64K
Q32T1 Q32T4 Q32T8
TOSHIBA PX04PMC080 800GBランダム4KiBリード結果 (MB/s) テストサイズ: 1GiB
![Page 14: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/14.jpg)
14
CrystalDiskMark
![Page 15: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/15.jpg)
15CrystalDiskMark (2007年リリース)
出典:窓の杜http://www.forest.impress.co.jp/article/2007/04/03/crystaldiskmark.html
□プログラム名CrystalDiskMark(くりすたるでぃすくまーく)
□人気★ ★ ★ ★ ☆年間150万DL以上 (Shizuku Edition 含む)
□開発動機ストレージに特化すれば良いもの作れる?
□アピールポイント• 縮小スクリーンショットでも全てがわかる• とにかくシンプル• 多言語対応 (40言語以上)
□リスペクト• FDBENCH (EP82改/かず 氏)
□ひとこと• 国内外でHDD/SSDの新製品評価に活用
□お詫び• Ver. 1.0~2.1までベンチマーク部に致命的
な不具合がありご迷惑をおかけしました。⇒ 最優先で修正に取り組み2.2で完治
![Page 16: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/16.jpg)
16CrystalDiskMark 3
CrystalDiskMark 3
従来手法(1MiBブロックの同期リード/ライト)ではNVMe SSDのピーク速度が測定できない
⇩
時代遅れなプロダクト
![Page 17: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/17.jpg)
17CrystalDiskMark 4/5 の開発
某I社
やぁ。ひよひよ。開発中のNVMe SSDのベンチマーク結果が振るわないんだけどなんとかならないかな?
なんとかしたいのは山々だけど、NVMe SSD持っていないし、どうすれば良いのかわからないんだ。
某I社
OK! OK!サンプル送るから色々試してみてくれ。出来るだけ早く対応よろしく!
![Page 18: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/18.jpg)
18
DiskSpdhttps://github.com/Microsoft/diskspd
CrystalDiskMark 3 と 5 の構成
UI
Core
CrystalDiskMark 3 CrystalDiskMark 5
DiskMark.exeベンチマーク部内製
DiskMark32.exe
Microsoft製DiskSpd採用
ベンチマーク機能改善
![Page 19: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/19.jpg)
19CrystalDiskMark 3 と 5 の比較
CrystalDiskMark 3 CrystalDiskMark 5
マルチキュー&スレッド対応
ピーク速度測定に対応
TOSHIBA PX04PMC080 800GB
シーケンシャルリード
3.4GB/sシーケンシャルリード
1.2GB/s
![Page 20: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/20.jpg)
20言わずにはいられない真実・・・
べっ、ベンチマークはスポーツだし⁉エンタープライズならきっとある!!
でっ、でも・・・こんな多数の並列処理って本当にあるんでしょうか?
![Page 21: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/21.jpg)
21ベンチマーク結果
0
500
1000
1500
2000
2500
3000
3500
4000
Sequential Read Sequential Write Random 4KiB Read Random 4KiB Write
TOSHIBA PX04PMC080 800GB (MB/s)
Q1T1 Q4T1 Q16T1 Q32T1 Q32T4 Q32T8
1Queue/1Threadではピーク速度測定不可
Threadを増やす必要あり
System: Shuttle SH170R6CPU: Intel Core i7 6700T (2.8GHz)Memory: DDR4 2133MHz 16GBOS: Windows 10 Enterprise Ver.1607 (64bit)
![Page 22: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/22.jpg)
22
CrystalDiskInfo
![Page 23: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/23.jpg)
23CrystalDiskInfo (2008年リリース)
出典:窓の杜http://www.forest.impress.co.jp/article/2008/05/23/crystaldiskinfo.html
□プログラム名CrystalDiskInfo(くりすたるでぃすくいんふぉ)
□人気★ ★ ★ ★ ★年間300万DL以上 (Shizuku Edition 含む)
□開発のきっかけCrystalCPUID の開発が頓挫し打ちひしがれ
ていた頃に出会った「月のお姫さまがホームステイ」という設定のゲームに出てくる「司祭のお嬢さん」があまりにツボだったため。
□アピールポイント• 一部のUSB/RAID接続に対応• スクリーンショットで概要を把握• 多言語対応 (30言語以上)
□リスペクト•なし
□ひとこと•ディスク系ツールならメンテナンス不要と考えていたのですが、SSDベンダーが多数出現し個別対応が必要に……
![Page 24: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/24.jpg)
24NVMe 対応への道のり
CrystalDiskInfo 7
PATA/SATA RAID USB(IEEE1394)
NVMe
![Page 25: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/25.jpg)
25NVMe のコマンド体系
標準コマンド必須3種類
Admin コマンド必須10種類
![Page 26: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/26.jpg)
26Intel SSD 750 1.2TB
![Page 27: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/27.jpg)
27SAMSUNG SSD 950 PRO 512GB
NVMe 調査のために購入
![Page 28: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/28.jpg)
28SAMSUNG SM951 128GB
NVMe 調査のためだけに購入
![Page 29: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/29.jpg)
29TOSHIBA PX04PMC080 800GB
TOSHIBA様から借用
![Page 30: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/30.jpg)
30S.M.A.R.T. | ATA
Microsoft 製 ATA Driver
ReadFile() ※Win32 API
ATA PASS THROUGH 経由で直接 ATA コマンドを送る
ATA HDD/SSD
SMART READ DATA※ATAコマンド
READ **** ※ATA コマンド
データ読み出し S.M.A.R.T.
![Page 31: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/31.jpg)
31S.M.A.R.T. | NVMe (Win8.1)
Microsoft 製 NVMe Driver(Win7/8/8.1/2012)
ReadFile() ※Win32 API
NVMe SSD
Get Log Page※NVMeコマンド
Read ※NVMe 標準コマンド
データ読み出し S.M.A.R.T.
Admin コマンドを通さない!!
![Page 32: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/32.jpg)
32
どうしたら・・・
NVMe SSD の S.M.A.R.T. 情報がWindows 上から読めない!!!!!!!!!!
NVMe \(^o^)/オワタ
![Page 33: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/33.jpg)
33神降臨
日本語の (*´Д`)ハァハァ ツイートに韓国の神から反応が!!
グローバルな活動が呼んだ奇跡か!?
![Page 34: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/34.jpg)
34神降臨
http://naraeon.net/
https://github.com/ebangin127/nvmetools
![Page 35: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/35.jpg)
35
神プロジェクトは Delphi 製だったorzステップ実行のため体験版ゲット(>_<)
【余談】神は Delphi 使いだったorz
![Page 36: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/36.jpg)
36S.M.A.R.T. | SAMSUNG SSD 950 PRO
Microsoft 製 NVMe Driver(Win 7/8/8.1/10/2012)
ReadFile() ※Win32 API
SAMSUNG SSD 950 PRO
データ読み出し
S.M.A.R.T.
Security Command (SCSI)
Get Log Page※NVMeコマンド
秘密の裏口からアクセス
Read ※NVMe 標準コマンド
SCSI PASS THROUGH 経由で特殊な SCSI コマンドを送る
![Page 37: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/37.jpg)
37
::ZeroMemory(&sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS24));
sptwb.Spt.Length = sizeof(SCSI_PASS_THROUGH);sptwb.Spt.PathId = 0;sptwb.Spt.TargetId = 0;sptwb.Spt.Lun = 0;sptwb.Spt.SenseInfoLength = 24;sptwb.Spt.DataTransferLength = IDENTIFY_BUFFER_SIZE;sptwb.Spt.TimeOutValue = 2;sptwb.Spt.DataBufferOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS24, DataBuf);sptwb.Spt.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS24, SenseBuf);
sptwb.Spt.CdbLength = 16;sptwb.Spt.Cdb[0] = 0xB5; // SECURITY PROTOCOL INsptwb.Spt.Cdb[1] = 0xFE; // SAMSUNG PROTOCOLsptwb.Spt.Cdb[3] = 6; // Get Log Pagesptwb.Spt.Cdb[9] = 0x40; // Transfer Lengthsptwb.Spt.DataIn = SCSI_IOCTL_DATA_OUT;sptwb.DataBuf[0] = 2; // SMART Health Information
sptwb.DataBuf[4] = 0xFF;sptwb.DataBuf[5] = 0xFF;sptwb.DataBuf[6] = 0xFF;sptwb.DataBuf[7] = 0xFF;
length = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS24, DataBuf) + sptwb.Spt.DataTransferLength;
bRet = ::DeviceIoControl(hIoCtrl, IOCTL_SCSI_PASS_THROUGH,&sptwb, length, &sptwb, length, &dwReturned, NULL);
秘密の裏口 | SAMSUNG SSD 950 PRO
一部抜粋
//SMART Health Information
![Page 38: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/38.jpg)
38隠しコマンド大好き!!
秘密の裏口大好きです!!
隠しコマンドがあるなんてビックリです‼
![Page 39: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/39.jpg)
39S.M.A.R.T. | Samsung SM951
Samsung 製 NVMe Driver
ReadFile() ※Win32 API
Samsung SM951
データ読み出し S.M.A.R.T.
Get Log Page※NVMeコマンド
Read ※NVMe 標準コマンド
NVMe PASS THROUGH (SM951専用)
経由で NVMe コマンドを送る
![Page 40: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/40.jpg)
40S.M.A.R.T. | Intel
Intel 製 NVMe Driver
ReadFile() ※Win32 API
Intel SSD 750
データ読み出し S.M.A.R.T.
Get Log Page※NVMeコマンド
Read ※NVMe 標準コマンド
NVMe PASS THROUGH (Intel専用) 経由で NVMe コマンドを送る
![Page 41: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/41.jpg)
41S.M.A.R.T. | Storage Query (Win10)
Microsoft 製 NVMe Driver
ReadFile() ※Win32 API
NVMe SSD
データ読み出し S.M.A.R.T.
Get Log Page※NVMeコマンド
Read ※NVMe 標準コマンド
NVMe Storage Query経由で NVMe コマンドを送る
![Page 42: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/42.jpg)
42
BOOL CAtaSmart::GetSmartAttributeNVMeStorageQuery
(INT physicalDriveId, INT scsiPort, INT scsiTargetId, ATA_SMART_INFO* asi)
{
CString path;
path.Format(L"¥¥¥¥.¥¥PhysicalDrive%d", physicalDriveId);
HANDLE hIoCtrl = CreateFile(path, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
BOOL bRet = 0;
StorageQuery::TStorageQueryWithBuffer nptwb;
ZeroMemory(&nptwb, sizeof(nptwb));
nptwb.ProtocolSpecific.ProtocolType = StorageQuery::ProtocolTypeNvme;
nptwb.ProtocolSpecific.DataType = StorageQuery::NVMeDataTypeLogPage;
nptwb.ProtocolSpecific.ProtocolDataRequestValue = 2; // SMART Health Information
nptwb.ProtocolSpecific.ProtocolDataRequestSubValue = 0xFFFFFFFF;
nptwb.ProtocolSpecific.ProtocolDataOffset = sizeof(StorageQuery::TStorageProtocolSpecificData);
nptwb.ProtocolSpecific.ProtocolDataLength = 4096;
nptwb.Query.PropertyId = StorageQuery::StorageAdapterProtocolSpecificProperty;
nptwb.Query.QueryType = StorageQuery::PropertyStandardQuery;
DWORD dwReturned = 0;
bRet = DeviceIoControl(hIoCtrl, IOCTL_STORAGE_QUERY_PROPERTY,
&nptwb, sizeof(nptwb), &nptwb, sizeof(nptwb), &dwReturned, NULL);
CloseHandle(hIoCtrl);
memcpy_s(&(asi->SmartReadData), 512, nptwb.Buffer, 512);
return bRet;
}
Win10新機能 | NVMe Storage Query
一部抜粋
![Page 43: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/43.jpg)
43ついに NVMe に対応!!
![Page 44: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/44.jpg)
44NVMe 対応状況
NVMe DriverSSD
MicrosoftIntel Samsung
Win 10 Win 8.1
Intel SSD 750 〇 × 〇 -
SAMSUNG SSD 950 PRO 〇 〇 - 〇
SAMSUNG SM951 〇 × - 〇
TOSHIBA PX04PMC080 〇 × - -
TOSHIBA XG3 〇 × - -
ZOTAC SONIX 〇 × - -
裏口: SAMSUNG SSD 950 PROのみ
![Page 45: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/45.jpg)
45
まとめ
![Page 46: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/46.jpg)
46まとめ
CrystalDiskMark & CrystalDiskInfo
NVMe対応
![Page 47: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/47.jpg)
47
参考文献
![Page 48: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/48.jpg)
48• nvmexpress.org
http://www.nvmexpress.org/
• NVM Express 1.2a Specificationhttp://www.nvmexpress.org/wp-content/uploads/NVM-Express-1_2a.pdf
• Naraeon NVMe Toolshttps://github.com/ebangin127/nvmetools
参考文献
![Page 49: C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。](https://reader034.vdocuments.site/reader034/viewer/2022042422/5870d39d1a28ab64768b60c7/html5/thumbnails/49.jpg)
49懇親会もよろしくお願いします!!
キーワード:NVMe, ベンチマーク, Benchmark, AHCI, SSD, HDD, CPU, CPUID, ビデオカード, メガデモ, Final Reality, 3DMark, HDBENCH, WCPUID, Direct3D, OpenGL, MIDI, GS, XG, Photoshop, HiDPI, 8K, 5K, 4K, Displayport 1.3, Thunderbolt 3, HDMI 2.0, BIOS, EFI, SMBIOS, Firmware, 逆アセンブル, 逆コンパイル, カーネルモードドライバ, コードサイニング証明書, デジタル署名, x64, x86, i386, Win32, Win64, MFC, Visual C++, Visual C#, WinForms, WPF, DirectWrite, Windows 10, GDI, GDI+, リソースリーク, ハンドルリーク, メモリーリーク, クラッシュ, ブルースクリーン, S.M.A.R.T., PCI, PCIExpress, 10GbE, 10GBase-T, ダブルフォルト, 8月