![](https://img-blog.csdnimg.cn/f554788899284cb8adaedbb1adc8cdb1.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机组成
文章平均质量分 89
介绍计算机组成相关原理
百里杨
码农想飞~~
展开
-
管理命令集之一
管理命令集(Admin Command Set),定义了可以提交到Admin Submission Queue的命令,这些命令以操作码(Opcode)的形式,进行编码,如下表所示:O/M定义:O = 可选,M = 强制未列出的操作码被保留在命令的“Dword 0”中Opcode00 ~ 11h,命令主要负责I/O Queue与Firmware等管理工作。80 ~ BFh,特定于I/O命令集。C0 ~ FFh,特定于供应商的。原创 2024-01-25 20:21:12 · 1159 阅读 · 1 评论 -
NVMe系统内存结构 - 命令聚合与仲裁
Fused Operations(聚合操作),是指通过“融合”两个更简单的命令,来实现更复杂的命令。这个功能是可选的,Identify Controller Data Structure表明了对该特性的支持。在聚合操作中,有以下要求:这两个命令,应作为一个原子单元按顺序执行;控制器应表现为,在这两个命令之间,没有执行过其他操作。在这两个命令中遇到错误时,操作结束。如果序列中的第一个命令失败,那么第二个命令将被中止。如果序列中的第二个命令失败,那么第一个命令的完成状态是序列特定的。LBA ra原创 2024-01-19 12:04:42 · 1044 阅读 · 0 评论 -
NVMe系统内存结构 - 完成消息格式
命令需要被提交到Submission Queue中,以便NVMe控制器执行,在执行结束后,会有对应的完成状态,放入到Completion Queue中。NVMe命令长度均为64Byte,对应的Completion消息长度均为16Byte。原创 2024-01-18 10:16:57 · 1230 阅读 · 0 评论 -
NVMe系统内存结构 - Meta Data
端到端:一端是主机的内存空间,一端是SSD的闪存空间。我们需要保护的是用户数据。主机与SSD之间,数据传输的最小单元是逻辑块(Logical Block,LB),每个逻辑块大小可以是512/1024/2048/4096等字节,主机在格式化SSD的时候,逻辑块大小就确定了,之后两者就按这个逻辑块大小进行数据交互。数据从主机到NVM(Non-Volatile Memory,目前一般是闪存,后面我就用闪存来代表NVM),首先要经过PCIe传输到SSD的控制器,然后控制器把数据写入闪存;反过来,主机想从闪原创 2024-01-16 21:09:30 · 1299 阅读 · 0 评论 -
NVMe系统内存结构 - SGL
Scatter Gather List(SGL)是一个数据结构,用以描述一段数据空间,这个空间可以是数据源所在的空间,也可以是数据目标空间。SGL首先是个List,是个链表,由一个或者多个SGL Segment组成,而每个SGL Segment又由一个或者多个SGL Descriptor组成。原创 2024-01-16 15:51:48 · 1702 阅读 · 0 评论 -
NVMe系统内存结构 - PRP与PRP List
NVMe把Host的内存划分为一个一个页(Page),页的大小可以是4KB,8KB,16KB… 128MB。物理内存页面大小,由主机软件在“CC.MPS”中配置。Physical Region Page (PRP),PRP是指向物理内存页(Page)的指针。下图,显示了由Page Base Address和Offset组成的PRP的布局。原创 2024-01-12 15:29:57 · 2551 阅读 · 1 评论 -
NVMe系统内存结构 - 命令格式
Head和Tail条目指针,对应于Completion Queue Head Doorbells和Submission Queue Tail Doorbells。doorbell寄存器由host软件更新。Tail一个Queue条目的提交者,使用当前Tail条目指针,来标识下一个空闲Queue条目空间。提交者将新条目,提交到Tail指向的空闲Queue条目空间后,对Tail条目指针加1。如果Tail条目指针增量,超过Queue大小,则Tail条目指针将归零。原创 2024-01-08 17:44:07 · 1726 阅读 · 0 评论 -
NVMe控制器寄存器
NVMe控制器寄存器,位于配置空间BAR0与BAR1,所映射的内存空间中。BAR0为低32位,BAR1为高32位,一起组合为64位内存地址,表示PCIe设备内存空间的基址。NVMe控制器寄存器,就位于该内存空间中,并且host访问这些寄存器,应按原始宽度或32位对齐来访问。由于NVMe控制器寄存器,位于PCIe设备内存空间中,因此上表中Start和End列,是相对于PCIe设备内存空间基址的偏移。原创 2024-01-03 15:29:23 · 1842 阅读 · 0 评论 -
NVMe配置空间寄存器
NVMe基于PCIe协议,因此也必须满足PCIe协议的基本要求。本节主要介绍,NVMe设备的配置空间组成,比如PCI Header、PCI Capabilities和PCI Express Extended Capabilities,并且还有NVMe设备的附加要求。NVMe设备,如下所示:可以看到有,1个PCI Header,4个Capability,1个Extended Capability,接下来,我们详细介绍。原创 2023-12-26 15:39:08 · 1730 阅读 · 0 评论 -
NVMe的Queue与命名空间
NVM Express (NVMe)是一个寄存器级接口,用来实现主机软件与非易失性存储器子系统通信。该接口针对企业和客户端固态驱动器进行了优化,通常附加到PCI Express接口。该接口的目标是在客户端和企业系统中使用。此外,该规范还定义了一个用于NVM子系统的标准命令集。原创 2023-12-22 17:50:43 · 1642 阅读 · 1 评论 -
NVMe前世今生
目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口,接口协议为 AHCI,是 Intel 联合多家公司研发的系统接口标准。AHCI 最大队列深度为 32,即主机最多可以发 32 条命令给 HDD 或 SSD 执行,在 HDD 时代整个性能瓶颈在硬盘端,而不是接口和协议端,所以 AHCI 可以很好的匹配 HDD。原创 2023-12-19 16:08:40 · 1730 阅读 · 0 评论 -
NVMe协议基础系列教程
NVMe是一种基于PCIe的应用层协议,NVMe应用非常广泛,可用于计算机硬盘、固态硬盘、存储服务器、虚拟存储系统等。它可以大大提高存储设备的性能,有助于提升系统的性能。我们以NVMe 1.1a版本协议为例,分如下章节进行介绍。4 《NVMe控制器寄存器》10 《错误报告与恢复》5 《系统内存结构》7 《NVM命令集》原创 2023-12-19 11:48:01 · 1310 阅读 · 0 评论 -
MSR寄存器访问
MSR是CPU的一组64位寄存器,每个MSR都有它的地址值(如下图所示),可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作。如图中为8个P-state寄存器,地址分别为0xC001 0064 ~ 0xC001 006B,每个寄存器64bit。原创 2023-02-18 17:25:30 · 2859 阅读 · 1 评论 -
CXL 2.0 Device配置空间寄存器组成
CXL设备配置空间一共4KB(0x000~0xFFF),由(0x000~0x0FF)和(0x100~0xFFF)组成。原创 2022-11-25 18:17:36 · 2326 阅读 · 1 评论 -
老男孩读PCIe介绍系列
目录1 老男孩读PCIe之一:从PCIe速度说起2 老男孩读PCIe之二:PCIe拓扑结构3 老男孩读PCIe之三:PCIe分层结构4 老男孩读PCIe之四:TLP类型5 老男孩读PCIe之五:TLP结构5.1 Memory TLP5.2 Configuration TLP5.3 Message TLP5.4 Completion TLP6 老男孩读PCIe之六:配置和地址空间7 老男孩读PCIe之七:TLP的路由7.1 地址路由7.2 ID路由7.3 隐式路由从今天开始,老男孩要开始讲PCIe了。对我来说转载 2022-11-24 12:22:07 · 2558 阅读 · 1 评论 -
通过CPUID指令读取处理器信息
一、CPUID简介CPUID操作码是一个面向x86架构的处理器补充指令,它的名称派生自CPU识别,作用是允许软件通过CPUID指令读取处理器的详细信息。二、CPUID基本原理CPUID有很多function号,每个号代表一个功能。CPUID指令的基本原理是:1.先将function号,写入EAX寄存器;2.再执行cpuid指令;3.执行结果会被放入到EAX、EBX、ECX 及 EDX 寄存器,通过读取这4个寄存器,就可以获取到该function号对应的数据信息。比如:EAX=0,获取C原创 2021-12-16 19:07:31 · 4100 阅读 · 14 评论 -
DDR5内存条容量计算
DDR5内存条容量计算一、理解DDR5通道的变化二、理解芯片package三、DDR5 symmetric module容量计算之前对DDR的一些基础知识进行了总结。最近需要了解DDR5的知识,在之前文章基础上又有一些认识,所以重新开一篇,继续记录。如果对基础概念不清楚,可以查看《一步一步教你理解DDR基本原理》。DDR5的SPD规范中(https://pan.baidu.com/s/1JTVLnR2PpFsr_qApNZZoGw 提取码: k5p7),有关于DDR5内存条容量的计算方法,如下:原创 2021-10-19 21:35:11 · 9563 阅读 · 1 评论 -
一步一步带你理解DDR基本原理
一步一步教你理解DDR基本原理一、DDR概述二、DIMM概述三、内存颗粒内部基本结构1、Bank、Column、Row2、内存颗粒容量计算四、RANK1、RANK是什么2、多RANK的意义五、CHANNEL六、内存控制器到内存颗粒层次总结七、SPD数据1、SPD是什么2、SPD数据格式3、SPD数据篡改一、DDR概述DDR的全称为Double Data Rate SDRAM(双倍速率的SDRAM),就是我们平时说的内存颗粒,也就是内存芯片。DDR在原有的SDRAM的基础上改进而来,SDRAM在一个C原创 2021-10-16 17:42:54 · 55594 阅读 · 12 评论 -
内存条的逻辑BANK和RANK(物理BANK)概念
内存条的逻辑BANK和RANK(物理BANK)概念在内存上有一个参数:2R X16,1R X16, 1R X8…..这里的R就是Rank 既物理BANK,X16,X8,是指芯片位宽何谓内存BANK:内存的BANK其实分为两部分,逻辑BANK和物理BANK。 1.先来讲讲逻辑BANK。芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元格我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,这就是内存芯片寻址..转载 2021-10-13 17:41:08 · 5996 阅读 · 0 评论 -
Memory中的Channel/Rank/Bank解析
Memory中的Channel/Rank/Bank解析最近在看网卡底层驱动的一些资料,被内存bank,rank,channel这些关于memory的名词搞得绕来绕去,网上查了一些资料,说得也不全面。在这里让我们一步一步来拆解memory的神秘面纱,从架构到读写逐步解开这块秘密。发挥性memory分两种,SRAM与DRAMRAM(Random Access Memory)随机存取内存,之所以叫做“随机存取”,是因为相对于早期现行存储媒介(磁带?很久以前的)而言,因为磁带的存取是线性的(还记得快进/转载 2021-10-13 17:36:55 · 4723 阅读 · 0 评论 -
DDR从channel/rank/chip/bank/row/col/cell,DDR/GDDR/HBM
DDR/GDDR/HBM请参考文献1.ddr的层级结构一个soc或者PC上的ddr都是有很多颗ddr single chip组成的。这么多颗ddr又组成了不同的层级。这些层级从大到小分为:channel->rank->chip->bank->row->col->cell其中channel->rank->chip是ddr颗粒(就是单颗ddr,对应上图中黑色方块)之外的层级,bank->row->col->cell是ddr颗粒转载 2021-10-13 17:32:53 · 6779 阅读 · 1 评论