双口RAM
(1)双口RAM是含有两套相互独立的读写控制电路而得名。同时进行2次独立的读写操作,所以会增加存储器
(2)当两套读写电路同时操作同一块内存地址时,会产生写冲突。因此,增加一个busy标志(低电平)
多体并行 - 高位交叉,顺序编址
(1)多体并行是编址方式的一种转变。存储矩阵有多个行,每个行成为一个体。
(2)高位交叉编址的意思是:用地址的高位表示是哪个体。所以4体高位交叉编址就变成了高位分别为00,01,10,11$,低位作为体内地址。因此形成顺序编址。
多体并行 - 低位交叉编址,各体轮流编址
(1)低位为体号,高位为体内地址。正好使得连续地址分布在不同的体
(2)低位交叉编制,使得读取连续地址的数据时,采用流水线方式:
流水线为2步,分为通知体传输和体传输时间。
通知体的时间为cpu发出信号到体的时间,即总线传输时间。体传输时间为体读取数据的时间。
为了使流水线可以对齐,要求1个存取周期内,正好通知到所有体,所以存取周期为体数的整数倍。
eg:设4体交叉存储器,存取周期为T,总线传输周期为\(\tau\),则为实现流水线存取方式,应满足\(T = 4\tau\)。因为每个体的存取周期为n\(\tau\),最后一个体用一个\(\tau\)的时间在T内,所以总的传输时间为T+(n-1)\(\tau\)
高性能存储芯片
(1)SDRAM(同步DRAM):系统时钟控制下进行读出和写入,CPU无需等待
(2)RDRAM:由Rambus开发,解决存储器带宽问题
(3)带cache的DRAM:在DRAM的芯片中集成了一个由SRAM组成的cache
cache工作原理
(1)主存单位称为块,cache称为行,实质是一个东西
(2)CPU读主存时,把地址同时送给cache和主存,cache通过地址查看此字是否在cache中,若在则立即传送给cpu。
若不在,则用主存读周期把此字从主存中读出送到cpu,与此同时,把含有此字的整个数据块从主存读出送到cache的行中
cache与内存的映射关系(读方式)
(1)全关联:full associative cache
将内存也看成line的方式存储,全关联是指,内存的任意一个line可以映射到cache中的任意一个line。
全相连映射的主存地址分为2部分:主存块号|字块内地址;cache标记位为主存地址除了字块内地址的全部高位。
这就需要一个表,记录主存块号到cache行号的映射
这种方式,在查找内存是否在cache中时,要查找所有的tag。 而且查表的比较器很难实现
(2)直接映射:Direct Associated Cache
将内存按照cache大小划分为n个Page,内存中Page的line0对应cache的line0。因此直接映射下,cache标志位标志的是内存的page号。
另一种理解方式:主存中的几个特定行,映射到cache的一个特定行。多对一的关系。这种关系满足公式 i = j mod c
其中,i:cache行的行号。j:主存块的块号。c:cache的行数。标志位=j/c向下取整
直接映射相当于多体高位交叉顺序编址。体相当于整个cache,主存包含多个体。采用顺序编址,使得主存地质分成三部分: 体号(第几个cache)|cache块号|块内地质。所以cache把主存中的最高几位(cache体号)作为标记位
当恰好访问的几个主存地质,映射到了相同的cache行,就会产生抖动
(3)组相联:Set Associated Cache
i. 组相联映射把cache划分为过个way,每个way的结构一样。内存按照way的大小划分Page,page间采用直接映射方式,page内采用全相联映射方式 。
即:page号到组号的映射关系是多对一且固定的。
u为cache的way个数,v为way中的行数 。 v路组相联:把几行作为一个way
这种方式,把主存地址分为3部分:主存自块标记|组内地址(不用有way号,因为是映射出来的)|字内地址。分别对应cache的标记位,way内的行号
ii. c64+DSP的配置中,L1P使用1个way,L1D使用2个way,L2不区分程序和数据,使用4个cache way