【数字ic自整资料】存储器及不同端口RAM对比

参考资料

【FPGA】zynq 单端口RAM 双端口RAM 读写冲突 写写冲突_双口ram-CSDN博客

华为海思数字芯片设计笔试第五套_10、下列不属于动志数组内建函数的是: a lengtho b. new c. delete() d-CSDN博客

目录

1、计算器典型存储体系结构

2、三种不同端口RAM

(1)单端口RAM(Single-port RAM)

(2)伪双端口RAM(Simple dual-port RAM)

(3)真双端口RAM(True dual-port RAM)

3、RAM冲突问题

(1)读写冲突

(2)写写冲突


1、计算器典型存储体系结构

(1)常说的cache缓存,就是指SRAM。

(2)cache加在reg和memory之间,用来缓冲reg和memory速度差异过大导致数据传输过程中CPU需要等待的情况。

(3)双倍数据速率同步DRAM(ddr sdram)是目前主流的dram, 它的特点是:ddr sdram会在时钟信号的上边沿和下边沿均采样数据,因此可以大大增加数据的吞吐量。

(4)RAM的基本结构可分为三个部分:存储矩阵,地址译码器,读写电路。

RAM和ROM对比:

ROM

RAM

存储

永久存储,掉电保存

临时存储,掉电擦除

读写

只能读不能写

随机读写

容量

成本

应用

储存程序代码

储存运行数据

SRAM和DRAM对比:

SRAM

DRAM

结构

六个晶体管(结构复杂)

一个晶体管+一个电容(结构简单)

成本

数据刷新

不需要

需要

集成度

速度

成本

应用

高速缓冲存储器

大容量主储存器

2、三种不同端口RAM

(1)单端口RAM(Single-port RAM)

        输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。如果CPU需要读取RAM中的数据并将其写入到RAM的另一个位置,必须先执行读取操作,然后执行写入操作。

(2)伪双端口RAM(Simple dual-port RAM)

        输入有一组数据线,两组地址线,输出只有一个端口。伪双端口RAM可以提供并行读写操作,避免了传统单端口RAM的等待时间,因此有更快的访问速度和响应时间。

        其中,端口A只用于完成写操作,端口B只用于完成读操作,允许读写同时进行,且可以不同时钟。

        多出来的端口的用于ECC:可以对单比特进行纠正 对双比特进行检错,属于伪双端口RAM独有

(3)真双端口RAM(True dual-port RAM)

        输入有两组地址线和两组数据线,输出有两个端口。所以双口RAM两个端口都分别带有读写端口,可以在没有干扰的情况下进行读写,彼此互不干扰,可以相当于对单端口 RAM 的所有信号做了一个复制处理。

        这种RAM通常用于高端计算机系统中,因为它可以提高系统性能。例如,在多处理器系统中,多个处理器可以同时访问同一块双端口RAM,从而提高系统的并行处理能力。

3、RAM冲突问题

        双端口RAM会遇到的问题:

        读写冲突(Write-Write Collisions): 在同一时间,两个端口对同一个地址,一个进行读取,一个进行写入操作。(这个在伪双端口RAM中也会遇到)

        写写冲突(Write-Write Collisions): 在同一时间,两个端口对同一个地址进行写入操作。

(1)读写冲突

        读写冲突:即同时刻读写同一地址所出现的冲突,例如理论上我们已经向某个地址写入了新的数据,我们也希望可以同时读到这个地址内新写入的数据,但实际上,这个新数据还没有写入 RAM 中,所以我们读出来的可能是 RAM 默认值,或者是 RAM 该地址中上一次的值,这便是读写冲突。

        可以设定双口RAM为读优先还是写优先。

        在上图中 WEA[3:0] 为写使能,字节使能,每一个bit可以选择写入数据的那个字节被写入,1表示写入该字节 ,0表示不写入该字节, DINA[31:0]为写数据总线,DOUTBarf为读优先情况下读数据总线的值,DOUTBawf为写优先情况下读数据总线的值,RAM Contents为RAM中存储的数据。

        在读优先情况下,同时对一个地址进行读写,会先把RAM里原本的数值发送到DOUTBarf读数据总线, DOUTBARF输出的值一直为RAM原本的数据。

        在写优先情况下,WEA[3:0] 为b0101 表示写入第1个字节和第3个字节, 此时 DINA[31:0]为AAAA AAAA 会写入00AA 00AA的数据 因为是写优先 ,所以会把数据先发送到DOUTBarf读数据总线上,但是读数据总线此时也在读取数据,此时DOUTBarf上的值,就不知道是原本RAM里的数据 还是新写入的这个数据,就成了一个未知态。

        所以当发生读写冲突时,读优先的模式下读出的是读地址中存储的上一个数据;写优先模式时读出的是未知的数据“XX”。

        解决读写冲突:写优先:当检测到读和写同一个地址的时候,当前读输出数据不从RAM中读取,而是直接取写入数据,该方法叫做“写穿通到读“

(2)写写冲突

        表示端口A和端口B写使能同时有效且写地址DINA和DINB相同,此时需要关断一个写,把两个写端口都需要更新的值处理到一个写端口上。切记任何双端口 RAM 都不支持写写冲突

        如果数据有效使能不同,还可以将两个数据合并成一个数据传入RAM;但是如果有效使能有重叠,那么就会出现x不定态。

        所以写写冲突的情况在双端口RAM中避免。

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值