【数字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

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人