CPU Study-Multi-Port Cache

参考来源:《超标量处理器设计》—— 姚永斌
关于Multi-Port Cache可以参考:https://compas.cs.stonybrook.edu/~nhonarmand/courses/sp16/cse502/slides/04-caches.pdf

为了实现每个周期执行多条load/store指令,Cache必须支持多端口。

True Multi-Port

现实中不会对Cache设计真实的多端口。
因为如果真的要实现硬件电路上的多端口Cache设计,所有Cache中的控制通路和数据通路都需要复制。
也就需要两套地址解码器,两个端口可以同时独立地寻址Tag SRAM和Data SRAM。
也需要两个多路选择器(Way Mux),用来同时读取两个端口数据。
比较器的数量也要加倍,用来判断两个端口的命中情况。
也需要两个对齐器(Aligner)来完成字节或者半字节读取。
Tag SRAM和Data SRAM每个cell都需要同时支持两个并行的读取操作。
多端口SRAM CELL

不过此方案消耗的硬件资源太大,需要驱动多个端口导致处理器周期更长,功耗更高。
所以一般不采用此类设计。

Multiple Cache Copies

复制Tag SRAM和Data SRAM,消除对处理器周期的影响。
Multiple Cache

但是会浪费较多的面积,并且需要保持两个Cache的同步,例如:
store指令需要同时写到两个Cache,当一个Cache发生了Cache Line替换,则另一个Cache copy也必须替换,保持一致。

Multi-Banking

将Cache分为多个小型的bank,每个bank中只有一个端口。
如果一个周期内,Cache多个端口访问请求位于不同bank之中,并不会引起问题。
但是如果两个或者多个端口地址位于同一个bank中,就会引起bank confict冲突。
此方法下,N端口Cache仍然需要:
N个地址解码器+N个多路选择器+N个比较器+N个对齐器。
但是Data SRAM无需多端口,提高了响应需求。
但同时由于需要判断每个端口是否命中,对于Tag SRAM还是需要多端口读取。
Multi Bank
由于每个Cache端口请求都需要访问到bank,所以bank越多,布线资源就占用越多。

AMD Multi-Port Cache

AMD的皓龙系列是64位处理器,但是处理器的地址却是简化的设计。
它的虚拟地址是48位,物理地址为40位,从而来减少硅片面积。
处理器D-Cache则是采用了双端口,每个端口都是64位的位宽,能够在一个周期内同时运行load/store指令。
这个Cache多端口的功能就是通过Multi-Banking机制实现的,具体设计如下:
AMD
从上图可以看到,由于每个Bank都是单端口的SRAM,保证硅片面积消耗和访问速度的平衡,Bank数量减少也大大减少了冲突概率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7189.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-c TCP服务模型

1、TCP模型,服务端与客户端的搭建时序图 2、TCP模型,在创建阶段和通信阶段,对套接字的理解 2.1、tcp连接阶段 2.2、tcp通信状态 一个服务端与多个客户端的通信状态 TCP与UDP的对比 (下图是笔者理解所画,可能也许有错…

一文了解Android的Doze模式

Android 的 Doze 模式是一项省电功能,主要用于减少设备的功耗,特别是在屏幕关闭且设备长时间未被使用的情况下。Doze 模式在 Android 6.0(API Level 23)首次引入,并在后续版本中不断改进,以便更智能地管理后…

Redis设计与实现 学习笔记 第十六章 Sentinel

Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的从服…

I.MX6U 裸机开发3. GPIO操作控制LED灯

I.MX6U 裸机开发3. GPIO操作控制LED灯 一、创建项目目录及源文件1. 新建目录2. 远程开发环境3. 创建源文件 二、代码编写1. 打开时钟2. 配置端口复用功能为GPIO3. 配置端口电气属性4. 设置GPIO方向(GDIR寄存器)5. 输出6. 死循环等待 三、编译程序1. 整体…

雷军-2022.8小米创业思考-11-新零售:用电商思维做新零售,极致的效率+极致的体验。也有弯路,重回极致效率的轨道上。

第十一章 新零售 当我们说到小米模式的时候,其实我们说的是两件东西: 一是小米模式的本质,即高效率的商业模式; 另一件是小米这家公司具象的商业模式,这是小米在实践中摸索、建立的一整套业务模型。 从2015年到202…

Java:多态的调用

1.什么是多态 允许不同类的对象对同一消息做不同的响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)。多态使用了一种动态绑定(dynamic binding)技术,指在执行期间判断所引用…

基于Python的学生宿舍管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

基于springboot+vue实现的网上预约挂号管理系统 (源码+L文+ppt)4-104

结合现有六和医院网上预约挂号管理系统的特点,应用新技术,构建了六和医院网上预约挂号管理系统。首先从需求出发,对目前传统的六和医院网上预约挂号管理进行了详细的了解和分析。根据需求分析结果,对系统进行了设计,并…

C++初阶(九)--初识模板

目录 引入 一、什么是模板 二、函数模板 1.函数模板的概念 2.函数模板的格式 template关键字 模板参数列表 3.函数模板的原理 4.函数模板的实例化 5.数模板的匹配原则 三、类模板 1.类模板的定义格式 2.类模板的实例化 引入 在编程的世界里,我们经常…

C语言 | Leetcode C语言题解之第537题复数乘法

题目: 题解: bool parseComplexNumber(const char * num, int * real, int * image) {char *token strtok(num, "");*real atoi(token);token strtok(NULL, "i");*image atoi(token);return true; };char * complexNumberMulti…

牛客网项目总结

下面这幅图是牛客网项目的架构图,最下层是Spring Boot,表示我们所有的技术都是基于Spring Boot,上面一层是Spring,Spring上面是Spring MVC、Spring MyBatis 和 Spring Security。 通过Spring MVC 解决前后端请求交互的问题&#…

想画一个沙漠掘金游戏地图

想画一个沙漠掘金游戏地图 沙漠掘金生成一个地图htmljs 沙漠掘金 沙漠掘金是一个企业培训课程游戏,规则大致是: 玩家从大本营出发,到达矿山掘金后返回,如果规定的天数未回来,则失败,如果回来,…

【Java爬虫的淘宝寻宝记】—— 淘宝商品类目的“藏宝图”

引言: 在淘宝这个广袤的“商品宇宙”中,每一件商品都是一颗璀璨的星球,而商品类目就是连接这些星球的星际航道。今天,我们将派遣一位勇敢的Java爬虫宇航员,去揭开这些星际航道背后的秘密——商品类目。准备好了吗&…

内网穿透-SSF内网穿透反向socks代理之渗透内网thinkphp主机上线msf

1 ssf 简介 Secure Socket Funneling socks正反向代理,linux版较好的免杀 1.1下载地址 https://github.com/securesocketfunneling/ssf 1.2下载编译好的执行文件 https://github.com/securesocketfunneling/ssf/releases/tag/3.0.0 2.环境 kali 攻击机 网卡 桥…

【HarmonyOS】键盘遮挡输入框UI布局处理

【HarmonyOS】键盘遮挡输入框UI布局处理 问题背景: 在开发输入框UI时,特别是登录页面的密码输入框靠下,或者是评论底部的pop弹框。 当我们输入框获得焦点后,键盘自下而上显示,一般情况下会遮挡住我们的UI布局。 导致…

ssm基于BS的仓库在线管理系统的设计与实现+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码看文章最下面 需要定制看文章最下面 目 录 第一章 绪论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 研究内容 2 第二章 开发环境与技术3 …

QML项目实战:自定义TextField

目录 一.添加模块 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.4 import QtGraphicalEffects 1.15 二.自定义TextField 1.属性设置 2.输入框设置 3.按钮开关 三.效果 1.readonly为false 2.readonly为true 四.代码 一.添加模块 import QtQuick.…

C++ | Leetcode C++题解之第523题连续的子数组和

题目&#xff1a; 题解&#xff1a; class Solution { public:bool checkSubarraySum(vector<int>& nums, int k) {int m nums.size();if (m < 2) {return false;}unordered_map<int, int> mp;mp[0] -1;int remainder 0;for (int i 0; i < m; i) {r…

AFL++实战入门与afl-fuzz流程解析(源码流程图)

简介 本项目为模糊测试的零基础教学,适合了解 pwn 且会使用 Linux 的 gcc、gdb 的读者。模糊测试旨在通过向程序投喂数据使其崩溃,从而获取崩溃样本以寻找程序漏洞。本文前半部分介绍 AFL++ 的 docker 环境配置,帮助读者解决入门时的环境和网络问题; 后半部分全面解析 afl…

Java 网络编程(一)—— UDP数据报套接字编程

概念 在网络编程中主要的对象有两个&#xff1a;客户端和服务器。客户端是提供请求的&#xff0c;归用户使用&#xff0c;发送的请求会被服务器接收&#xff0c;服务器根据请求做出响应&#xff0c;然后再将响应的数据包返回给客户端。 作为程序员&#xff0c;我们主要关心应…