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

2024-08-24 00:12

本文主要是介绍【数字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中避免。

这篇关于【数字ic自整资料】存储器及不同端口RAM对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100899

相关文章

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc