前言 : 有很多时候看一些技术文章,总是停留在看的阶段,但是知识的学习在我看来分成三个步骤:first 。 了解-主要动作也就是看,或者听,比较浅显的学习方式,遗忘速度也比较快 ; second 。 看完,动手做, 目的加深知识的理解和产出新的知识火花 ; third 。 再次接触到这类知识,在看的过程中就已经能够脑子里有个动态的图,而不是静态的文字,那就是已经有自己的知识体系了
所以在形成第三个习惯的时候,往往需要一写或现实或框架图辅助我们形成知识图谱,在这里不定期会更新一些。我尽量做到有模块一些
计算机硬件资源
服务器上有多少个memory riser ,就是多少个/2路服务器,一般来说较好的是4路服务器,8个memery riser
第一个图蓝色部分就是可以插入内存条的槽, 红色部分是SMB(Scalable Memory Buffer,可扩展内存缓冲区, 一遍通过总线链接cpu的,一遍通过channel 链接内存的玩意儿,可见总揽)
简单理解一下内存布局和寻址:
上图中每个格子的存储宽度是内存颗粒(Chip or bank)的位宽,在这里由8个bank组成一个Rank,而CPU寻址宽度是64bit,所以64/8=8bit,即每个格子是1个字节。
常常说得cpu读取和写入数据是怎么操作的?简单来说分为以下三步:
- 行有效。RAS#低电平,CAS#高电平。意味着现在行地址有效,同时在A0-A13传送地址信号,即2^13个Row可以选择。
- 列有效。RAS#高电平,CAS#低电平。意味着列地址有效,这时在A0-A13上传送的是列地址。没错,A0-A13是行列共用的,所以每个格子选择需要有1和2两步才能唯一确定。
- 数据读出或写入。根据COMMAND进行读取或者写入。在选定好小方格后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(DQ)输出到内存总线上了。
而且CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS时延)。由于CL只在读取时出现,所以CL又被称为读取时延(RL,Read Latency)
所以cpu和内存的交互为什么会说完全比不上cpu计算的时间就是这个原因