当前位置: 首页 > article >正文

ARM V2处理器微架构分析

e7996c169ff62456b542d27a2b8cda6b.jpeg

ARM V2处理器微架构介绍

   

简介

ARM V2的微架构是ARM处理器的基础,它包括了指令集、寄存器、控制单元等。这篇文章主要分析了ARM V2的一些微架构内容。如果您需要更详细的信息,可以参考这篇文章。

f8ad7fdcd0239ea9f4f963bf6dd4e7bc.jpeg

IFU

文章内容经过优化如下:1、Cycle预测两个分支的特性,在服务器系列N2/V2中实现难度较大。复杂度高,需平衡多种因素。

2、实现uOp Cache,这一选择在RISC指令集中并不常见。尽管N2/V2系列才刚实现此特性,但实际移动端早在A77就已经开始采用这个微架构。然而,今年发布的V3/N3却放弃了uOp Cache设计。这可能是出于对功耗的考虑,以及优化ICache和其他IFU方面的特性所带来的收益更为显著。相较于uOp Cache,牺牲面积和功耗以获得收益的做法似乎更为明智,因此N3系列选择了放弃uOp Cache。

3、新增TAGE预测器及扩大BTB容量,属于常规升级。参数化调整为主,细节算法优化尚不明确。

4、针对间接指令,我们设计了独立的预测器。然而,由于历史原因,N和V系列实际上是从A系列演变而来的。在经典的A76微架构中,一开始移动端和服务器端的区分并不明显,因此之前的间接预测器与移动端一样,都是混合使用的。

随着时间的推移,服务器端间接指令的比例逐渐增加,而移动端的一些微架构在确定为间接指令后,再查找非独立IBTB设计方案(以节约面积和功耗)可能不再适用于服务器端。即使进行解耦设计,也难以完全消除间接指令预测带来的延迟问题。

6、取指队列也从原来的16entry升级到现在的32entry。

140597dc24f6c167d6d15b30e968fcec.jpeg

Decode/Rename/Dispatch

Decode/Rename/Dispatch细节已优化,宽度提升至6,借助uOp Cache实现低延迟发出8 uOps。Decode Queue从16增至32,新增Rename Checkpoint及优化Rename Rebuild,提高效率。

1132a3e55ae8fe83c730eb0658d16f23.jpeg

Issue/Execute

"新增了2个单周期ALUs,扩展了Issue Queues,SX/MX从20增至22entries,VX从20增加至28entries等。"

6e5c935a10e92d185ffbd3dc821efce3.jpeg

LSU

1、增加DTLB数量至48entry。

2、DCache将PLRU替换算法改为RRIP,ARM常用的替换算法,NRU/PLRU/RRIP,L1 Cache使用PLRU更多,更重视L1 Cache的时候会牺牲更多资源在替换算法上。现在论文常讲的更“细粒度”的替换算法,在实际工程中见的更频繁了。例如初始化区分历史,将数据或者指令视作不等价等。

简单讲,有一种观点是不全部强调命中率,更强调整体的性能,举个简单的例子,有些数据不命中,对其miss系统损失的代价更高,即使依据频繁访问原则“它”应该被踢掉,但由于“它”地位更高,所以不将“它”替换掉。

或者有观点,识别数据本身的特性以及访问频率等情况综合去考量替换问题,这无疑会消耗更多的资源,对于路数更多的L2可能使用类似“细粒度”的替换算法收益更高。但现在ARM L1 Cache也开始逐步使用相对复杂的替换算法。其它就是一些常规的参数级别的升级,例如2LS,1LD,一些buffer深度给出了升级。

b3f56a67d1e6210f4f0ffc4184b70b1a.jpeg

L2


8路网络,2MB和1MB延迟保持一致(与前版本相比)。新算法采用6-state RRIP。单个bank每2个时钟周期读写64B,共4个bank。

ba4021b58afbbb5729aad4ab6b0c3a11.jpeg

总结

arm的微架构给我的感觉是细节特别多,很多微小的特性都会抓取去优化,这是国内很多公司不具备的,国际一线的CPU公司,微架构方向的优化每年提升都放缓了,更多的是面向特定场景的优化,反而是工艺的提升以及SoC系统级微架构的提升对芯片系统的影响更大了。

当然国内对CPU微架构的设计依然相对落后一些,即使在“参数上”追上了国际水平,并且抛开一些生态问题,实际“面积”“功耗”以及常规情况下的性能依旧有不少的提升空间。

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-


http://www.kler.cn/news/305151.html

相关文章:

  • input和editor一起使用在ios上聚焦异常
  • 【计算机网络 - 基础问题】每日 3 题(四)
  • 目标检测中的解耦和耦合、anchor-free和anchor-base
  • 分销系统后端技术文档
  • 大数据Flink(一百一十八):SQL水印操作(Watermark)
  • Linux基础---07文件传输(网络和Win文件)
  • 9 递归——50. Pow(x, n) ★★
  • linux 操作系统下的curl 命令介绍和使用案例
  • docker如何实现资源隔离
  • Tomcat 版本怎么选?JMeter 真实压测多版本 Tomcat 数据给你最直接的参考,快收藏备用吧!
  • Gateway学习笔记
  • 牛客周赛 Round 29 (D E)
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十)
  • Oracle按照某一字段值排序并显示,相同的显示序号
  • C++详解string(全面解析)
  • 什么是算力?如何评估服务器算力?
  • rk3568系统buildroot开发笔记
  • Playwright 自动化验证码教程
  • 【计算机网络 - 基础问题】每日 3 题(三)
  • 基于鸿蒙API10的RTSP播放器(九:进度总结)
  • 进程的基本概念
  • C#中判断socket是否已断开的方法
  • CHARLS数据库系列教程(2)---数据清洗、拼接和整理(1)
  • 数据中台建设(六)—— 数据开发-提取数据价值
  • 第1步win10宿主机与虚拟机通过NAT共享上网互通
  • 系统架构设计师教程 第5章 5.3 系统分析与设计 笔记
  • 【chrome插件】只需一键,浏览器的书签信息就可以导出成为CSV了
  • OpenCV进行灰度变换
  • 打包好的jar包,如何部署在服务器?——详细教程
  • 死锁例子学习