第二天 《明解C语言入门篇》7-13章节 + NVMe协议PPT
今天把《明解C语言入门篇》的剩余7-13章节温习完了,需要注意的内容如下: 1、整数类数据类型包括:枚举型、字符型、整形三种。 2、C语言中将表示字符的char型的长度定义为1,使用sizeof运算符判断数据类型的长度。CHAR_BIT宏定义的长度在<limits.h>中。 3、typedef声明为已有的数据类型创建别名,typedef A B; 为数据类型A创建别名B。 4、逻辑位移不考虑符号位,所有二进制位都要进行位移,空位补0。算术位移会保留最高位的符号位,其余位进行位移,用符号位进行补位。 5、在定义函数宏时注意不要将空格插入宏名和“(”之间。 6、逗号运算符 a,b 按顺序判断a和b ,整个表达式最终生成b的判断结果。 7、在接受二维数组的形参的声明中,只有第一维的数组元素数可以省略。 8、表示对象地址的转换说明为%p。 9、数组名在大多数情况下被视为指向起始元素的指针,但在sizeof(数组名)会生成数组的整体长度,&数组名则是只想数组的整体的指针。 10、strlen函数返回字符串的长度不包含null字符。 11、.运算符和->运算符统称为访问运算符。 12、相同类型的结构体可以相互直接赋值。
NVMe协议
NVMe协议于2007年Intel开发者大会上被提出,全称为Non-Volatile Memory Express 非易失性存储器标准。具有两低一高一简的特性:延时、功耗低,传输性能高、硬件层简单。
1、PCIe 分为事务层(Transaction Layer)、数据链路层(Data link layer)、物理层(Physical layer)。 2、PCIe的中断方式必须支持MSI/MSI-x一种,还可以支持Legacy中断,提高兼容性。 3、NVMe的命令一共有13个,HOST管控命令(Admin Command)10个:Del/Crea I/O SQ、Del/Crea I/O CQ、Get log Page、idetify、set/get Feature、Asynchronous Event Request。HOST与SSD数据传输(IO Command)3个:flush 、w、r。 4、NVMe的三要素SQ(Submission Queue)CQ(Completion Queue)DQ(Doorbell Queue)。 5、ASQ与ACQ一对一关系,IOSQ和IOCQ可以多对一。SQ每个条目64个字节,CQ每个条目16个字节。 6、SQ、CQ位于HOST的内存中,DB在SSD的控制器内部并且与HOST的MEMORY有映射关系。 7、DB的主要功能记录SQ、CQ的头尾,还具有通知功能。 8、SQTDB-HOST生产者更新,CQHDB - HOST消费者更新。 9、SQHDB-SSD消费者更新,CQTDB-SSD生产者更新。 10、HOST在更新DB时会通知SSD相关信息。 11、NVMe有循环仲裁机制(Round Robin Arbitration)、加权循环仲裁机制(Weighted Round Robin Arbitration)。 12、RR主控必须支持,WRR主控选择性支持,RR ASQ与IOSQ具有同样高的优先级,按顺序分别取出一定数目的Commands。 13、WRR的优先级从高到低依次为ASQ、urgent calss、WRR class(H、M、L)。 14、在HOST与SSD数据传输时,SSD总是主动的一方。 15、NVMe的读写流程: 仅自己复习备用,图片很乱勿喷。
|