ARM V2微架构

devtools/2024/10/19 6:47:28/

简介

今年V3/N3已经发布,但考虑到没有公布太多的细节,我依据手册在“ARM发布新一代高性能处理器”一文中对微架构有阐述,本文主要简单分析ARM V2的一些微架构内容。

IFU

1、每个cycle预测两个分支,这个特性在服务器系列中是N2/V2刚有的,实现难度还是挺大的,复杂度相对比较高,需要平衡的东西比较多。

2、实现了uOp Cache,对于RISC指令集而言,这个选择不是很常见,尽管在N2/V2系列刚实现这个特性,但实际移动端早在A77就开始采用这个微架构,今年发布的V3/N3放弃了uOp Cache这个设计。可能是考虑到功耗问题,再加上优化了ICache和其它IFU方面的特性提升比较可观,对比下uOp Cache收益没有牺牲的面积和功耗大,所以放弃了。

3、增加了TAGE预测器以及BTB的容量,这就属于常规的升级了,基本是一些参数化的升级,更细节的算法优化不是很清楚。

4、给间接指令设计了单独的预测器,这里有历史遗留问题,由于N和V系列实际也是A系列演变而来,出于经典的A76微架构,一开始移动端和服务器端区分不明显,所以之前间接预测器和移动端一样都是混合的。而服务器端由于间接指令占比相对较多,移动端微架构是确定是间接指令之后再查找IBTB的设计方案(为了节约面积功耗)可能不那么适合服务器端了,即使是解耦设计,也不太容易覆盖住间接指令预测带来的延迟。

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

Decode/Rename/Dispatch

Decode/Rename/Dispatch细节没有更多的信息,decode宽度提升到6,由于uOp Cache的存在,命中uOp Cache可以低延迟的发出8 uOps。Decode Queueyou由16提升到32,增加了Rename Checkpoint以及优化了Rename Rebuild。

Issue/Execute

增加了2个单周期ALUs,增加Issue Queues,SX/MX从20增到22entries,VX从20增加到28entries等等。

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深度给出了升级。

L2

8路,2MB,和1MB的延迟一致(比较前版本),替换算法使用6-state RRIP。单个bank每2cycle读或写64B,共计4bank。

总结

arm的微架构给我的感觉是细节特别多,很多微小的特性都会抓取去优化,这是国内很多公司不具备的,国际一线的CPU公司,微架构方向的优化每年提升都放缓了,更多的是面向特定场景的优化,反而是工艺的提升以及SoC系统级微架构的提升对芯片系统的影响更大了。当然国内对CPU微架构的设计依然相对落后一些,即使在“参数上”追上了国际水平,并且抛开一些生态问题,实际“面积”“功耗”以及常规情况下的性能依旧有不少的提升空间(国内有些CPU性能出于宣传的角度,不少是在特定情况下测试的),当然以上的总结只是亦安个人的观点,很多是基于自己的感觉,大家见仁见智。


http://www.ppmy.cn/devtools/107353.html

相关文章

sscanf函数

在Visual Studio平台编译代码时&#xff0c;使用sscanf可能会报错&#xff0c;出不了结果。 在代码首行加&#xff1a;#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int sscanf (const char* str, const char* format, ...); str&#xff1a;待解析的字符串 f…

每日刷题(图论)

P1119 灾后重建 P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 看数据范围知道需要用到Floyd算法&#xff0c;但是道路是不能直接用的&#xff0c;需要等到连接道路的两个村庄重建好才可以使用&#xff0c;所以这需要按照时间依次加入中转点&#xff0c…

【数据分享】2021-2024年我国主要城市逐月轨道交通运营里程数据

以地铁为代表的轨道交通是大城市居民的主要交通出行方式之一&#xff0c;轨道交通的建设和运营情况也是一个城市发展水平的重要体现。本次我们为大家带来的是2021-2024年我国主要城市的逐月轨道交通运营里程数据&#xff01;目前最新数据到2024年7月&#xff0c;数据也会继续更…

资本不会共情打工人!董明珠谈35岁找不到工作,是因为高不成低不就......

在越来越苛刻的就业环境中&#xff0c;一旦过了35岁&#xff0c;就要面临中年失业的危机&#xff0c;很多岗位招聘页面甚至明确规定&#xff1a;只招35岁以下人员。 于是&#xff0c;就业市场中的“35岁门槛”&#xff0c;就成了大家热议的焦点。 这不&#xff0c;昨天“董明珠…

利用javacv实现视频转h264

网上找到的一个实用的视频转换工具类&#xff0c;可将视频转为h264编码&#xff08;方便在浏览器下播放视频&#xff09;。 import org.bytedeco.ffmpeg.avcodec.AVCodecParameters; import org.bytedeco.ffmpeg.avformat.AVFormatContext; import org.bytedeco.ffmpeg.avform…

鸿蒙OS创新实践:动态声控话筒开发指南

前言 在鸿蒙OS的生态中,开发者们不断探索和创新,以期为用户带来更丰富的交互体验。最近,我萌生了一个想法:制作一个能够随着声音动态变化的话筒组件。尽管网络上缺乏现成的参考案例,但我决定亲自动手,将这一创意变为现实。本文将深入解析这一开发过程,分享我的实战经验…

OpenFeign远程调用详解【微服务篇】

目录 一 什么是openfeign 二 怎么使用 1.导入依赖 2.编写FeignClient接口 3.使用注解开启openfeign功能 一 什么是openfeign 在使用之前&#xff0c;我们需要先知道openfeign是什么&#xff1f;以及它的功能是什么?在哪里需要使用它。那么接下来我们先通过一张流程图来进…

Express与SQLite集成教程:轻松实现数据库操作

Express使用SQLite的教程可以大致分为以下几个步骤。以下是一个详细的指南&#xff0c;帮助你在Express项目中集成SQLite数据库。 1. 安装必要的库 首先&#xff0c;你需要在你的Express项目中安装sqlite3库。打开终端或命令提示符&#xff0c;切换到你的项目目录&#xff0c…