| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 双端口RAM和多模块存储器 -> 正文阅读 |
|
[系统运维]双端口RAM和多模块存储器 |
双端口RAM?多核CPU进行并行读写操作同一根内存条中的数据,RAM需要有两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更加复杂的控制电路。 两个端口对同一主存操作有以下4种情况:
解决方法: 置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),并未关闭的端口正常访问,被关闭的端口延长一个很短的时间段后被再访问。如下图: 这样就?可以优化多核CPU访问同一根内存条的速度 多模块存储器多体并行存储器高位交叉编址的多体存储器上图:4个模块每个模块8个字,所以存储容量为32个字,为2的5次方,所以需要5位地址,由于只有四个模块,所以将高位的两个地址(体号)用来区分选择的是哪个模块,低位地址(体内地址)用来选择每个模块中的8个字,所以每个字的地址就如上图一样。 低位交叉编址的多体存储器上图:4个模块每个模块8个字,所以存储容量为32个字,为2的5次方,所以需要5位地址,由于只有四个模块,所以将高低位的两个地址(体号)用来区分选择的是哪个模块,高位地址(体内地址)用来选择每个模块中的8个字,所以每个字的地址就如上图一样。? 区别实际应用中很多数据都是连续的存储,所以访问的时候也需要连续访问 设每个存储体的?存储周期为T,存储时间为r,假设T=4r,连续访问00000 00001 00010 00011 00100 先看高位交叉编址的多体存储器,由于连续访问的数据都存储在同一个存储体中,所以只能等前一个读取周期过了之后,才能继续访问,所以如果要连续读取n个存储字->耗时nT ,该例子耗时5T ?看低位交叉编址的多体存储器,由于连续访问的数据分别存储在不同的存储器中,所以当前一个存储体被存取后(r时间后),第二个存储体能直接被存期,依次进行存取。所以如果要连续存取n个存储字->耗时T+(n-1)r,宏观上(当n趋近于无穷)的时候,该例子耗时T+4r=2T ?应该取几个"体"采用“流水线“的方式并行存取(宏观上并行,微观上串行) 宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。 存取周期为T,存取时间为r,为了保证流水线不间断,应保证模块数m>=T/r 存取周期为T,总线传输周期为r,为了使流水线不间断,应保证模块数m>=T/r 分别看m<T/r、m>T/r、m=T/r情况,第二种和第三种都能保证不间断,但是第二种效率没有达到极限 ? ? ?多体并行存储器 每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。 单体多字存储器每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字(一行),每次只能同时取m个字,不能单独取其中某个字,所以如果访问的两个数据分别在不同的行,需要将两行数据都取出来,存在了数据冗余情况 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:16:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |