深入了解汽车系统级芯片SoC连载:CPU微架构

发布者:VelvetWhisper最新更新时间:2022-03-14 关键字:汽车SoC  CPU  微架构 手机看文章 扫描二维码
随时随地手机看文章

一、微操作μ-op与宏操作macro-op


英特尔SunnyCove内核前端

 

图片来源:英特尔

 

上图为英特尔Sunny Cove内核前端。因为CISC的指令长度不确定,且比较复杂,英特尔将这些指令切割成固定长度,这个微指令从Pentium Pro开始在IA架构出现。处理器接受的是x86指令(CISC指令,复杂指令集),而在执行引擎内部执行的却不是x86指令,而是一条一条的类RISC指令,Intel 称之为Micro Operation,即micro-op或μ-op,一般用比较方便的写法来替代掉希腊字母: u-op或者uop。相对地,融合了多条指令的操作就称之为Macro Operation或macro-op,即宏操作。

 

英特尔逐渐改进微指令,后来加入微指令缓存即uOP cache,也有的地方叫L0级缓存,表面看来,uOP cache被定位为一个2级指令cache单元,是1级指令cache单元的子集。其独特之处在于它所存储的是译码之后的指令(uOPs)。早期Micro-op cache是由32组8条cacheline组成。每条cacheline最多保留6条uOps,共计1536条uOps,Sunny Cove是48组,也就是2304条uOps。这个Cache是在两个线程之间共享的,并保留了指向micro sequencer ROM的指针。它也是虚拟地址寻址,是L1指令cache的严格的子集。每条cacheline还包括其包含的uop数量及其长度。

 

内核一直都在处理来自指令流(Instruction Stream)的连续的32byte信息。同样地,uOPcache也是基于32byte窗口。因此uOP cache可以基于LRU(Least Recently Used)策略存储或者放弃整个窗口。英特尔将传统的流水线称为“legacy decode pipeline”。在首次迭代时,所有的指令都是经过“legacy decode pipeline”。一旦整个指令流窗口被译码并且发送到分配队列,窗口的拷贝就被发送到uOP cache。这是与所有其他操作同时发生的,因此这个功能没有增加额外的流水线阶段。后续的迭代,被缓存的已经解码好的指令流就可以直接被发送到分配队列了,省却了取指、预译码和译码的阶段,节省功耗,增加了吞吐量。这也是一个更短的流水线,延迟也减小了。 

 

uOP cache有着高于80%的命中率。在取指期间,分支预测器将会读取uOPscache的tags。如果命中了cache,会可以每周期发送至多4条uops(可能包含了fused macro-ops)到Instruction Decode Queue(IDQ),绕开了其他所有本该进行的预译码和译码。

 

ARMCortex-A77微架构

 

图片来源:ARM

 

上图为ARM Cortex-A77的架构图,自A77开始,ARM也添加了经解码后的指令缓存,与英特尔的uOP缓存高度类似,只不过ARM反其道用之,英特尔是把CISC指令切割成微指令,ARM是融合,把定长定格式的RISC指令融合成宏操作MOP(Macro Operation),然后再分割成uOP。这样做可能是RISC指令分得太散,有些是可以融合的,这样效率更高。再有就是解码器通常比后端吞吐量更高,有足够的MOP缓存可以让后端工作更饱和,利用率更高。

 

A78也是如此,每周期4个指令,6个MOPs,X1则不同,每周期5个指令,8个MOPs。

 

A78译码到分布

 

图片来源:互联网


二、发射与执行

 

ARM和AMD的执行单元一般将整数计算(ALU)与浮点计算(FPU)分开,英特尔则是合二为一,执行端关键的参数是发射宽度(Issue Width),目前最宽的是ARM的V1,多达15位,宽度越宽,ALU和FPU数量可以越多。通常ALU是4个,整数运算单元4个就够。V1有4个ALU,4个针对浮点的NEON,其中包含两个SVE。3个Load加载,2个写入Store。还有两个分支针对特定计算类型。

 

图片来源:互联网

 

所有计算机程序的本质,是指令的执行过程,从根本上说,也就是处理器的寄存器(Register)到内存之间的数据交互过程。这个交互,无非两个步骤:读内存,也就是加载操作(load), 从内存读到寄存器,写内存,就是存储操作(store),从寄存器写入到内存,LSU就是Load Store Unit。

 

LSU部件是指令流水线的一个执行部件,其上接收来自内核的LSU发射序列,其下连接着存储器子系统即数据缓存。其主要功能是将来自CPU的存储器请求发送到存储器子系统,并处理其下存储器子系统的应答数据和消息。在许多微架构中,引入了AGU(寻址生成器)计算有效地址以加速存储器指令的执行,使用ALU(计算单元,通常是标量计算单元)的部分流水处理LSU中的数据。而从逻辑功能上看,AGU和ALU所做的工作依然属于LSU。


三、定点与浮点

 

所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。通常将定点数据表示成纯小数或纯整数,为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前;而为了将数表示成纯整数,则把小数点固定在数值部分的最后面。

 

比如十进制的3.75,那么你可以用011+0.11,但是这种加法首先要对齐位宽,对齐目的就是让大家的单位一致。你可以把011扩展为011.00,把0.11扩展为000.11,这样一相加就得到011.11,就是十进制的3.75了,存在电脑的时候,电脑是没有小数点的,只会存为01111。如果是定点格式,这个小数点的位置就固定了,无法变动,由于计算的时候必须对齐位宽,这使得电脑能处理的数据范围受到限制,不能太大,也不能太小。假设以一个字节表示小数,小数点固定在5.3的位置,高5位表示整数,低3位表示小数:11001_001 —— 11001.001,转换一下:整数部分11001= 25,                   小数部分001 = 1(分子部分) 分母是1000(8),所以小数部分1/8(二级制只有0和1)。最终的小数表示是 25+ 1/8,即存在 0/8, 1/8,2/8,  ….  7/8共八个档,表示精度为1/8,所以定点小数存在数值范围和数值精度的问题!数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点,即权衡动态范围和精度。

 

如果是逻辑运算或简单的整数运算还可以,如果要显示比较大的变量,小数点的位置必须可以自由移动,这就是浮点。

 

图片来源:互联网

 

比如123.45用十进制科学计数法可以表示为1.2345x102,其中1.2345为尾数,10为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。IEEE754指定了:两种基本的浮点格式:单精度和双精度。其中单精度格式具有24位有效数字(即尾数)精度,总共占用32位;双精度格式具有53位有效数字(即尾数)精度,总共占用64位。

 

两种扩展浮点格式:单精度扩展和双精度扩展。此标准并未规定这些格式的精确精度和大小,但指定了最小精度和大小,例如IEEE双精度扩展格式必须至少具有64位有效数字精度,并总共占用至少79位。

 

浮点运算和定点运算(整数运算)不同,它通常是6个步骤:1. 异常检测:主要检测NAN(非数) 2. 对阶,尾数右移:不同阶码尾数不能直接相加减,所以需要对阶,比如1.1 * 2 E 1  + 1.1 * 2 E 2 尾数就不能运算,对阶,尾数右移,最终阶码一致。3 . 尾数求和求差,将对阶后的尾数按定点加减运算规则进行运算。4. 规格化:把非规格的小数转换为规格化的小数。5. 在对阶和右移过程中,可能会将尾数的低位丢失,引起误差,影响精度,为此可用舍入法来提高尾数的精度。IEEE754标准列出了四种可选的舍入处理方法:向上舍入,向下舍入,向最近舍入,直接截去。6. 溢出检查,与定点数运算不同的是,浮点数的溢出是以其运算结果的阶码的值是否产生溢出来判断的。若阶码的值超过了阶码所能表示的最大正数,则为上溢,进一步,若此时浮点数为正数,则为正上溢。若浮点数为负数,则为负上溢。进一步,若此时浮点数为正数,则为正下溢,若浮点数为负数,则为负下溢。正下溢和负下溢都作为机器零处理,即将尾数各位强制为零。 


四、具体CPU微架构

 

特斯拉使用AMD的CPU,因此特别对AMD的微架构做以说明。

 

图片来源:互联网

 

这是Zen 2代微架构的前端,ITLB就是 Instruction Translation Lookaside Buffer,另一种说法是指令转换后备缓冲区。AMD的L0/L1/L2缓存与传统的缓存定义不同,它解签了软件意义上的缓存而非硬件,L1里有BTB缓存,Hash路径缓存表,ITLB缓存好几种。Zen3代则将L1的BTB缓存由512条扩展到1024条,提高分支预测准确度。虽然L1缓存异常复杂,但总容量还是32K,分8路。Return Stack是方法返回栈,可能是分支预测异常的返回地址。

 

分支预测器经过Micro tags最终变为8个宏操作Marco Ops,进入宏操作缓存,缓存量为4K条,指令缓存排成序列,进入译码器,译码器宽度是4位,8个宏操作和4个译码后的指令进入OC/IC,分解为微操作序列,再分别进入堆叠引擎和存储独立侦测系统还有微码序列ROM,再进入分发站。

 

图片来源:互联网

 

Zen2代微架构的执行端,执行端分整数和浮点两大执行器,绿色为整数,粉色为浮点。整数部分指令经过重命名和定位后进入序列器,完成后提交或者说退出Retire再进入物理寄存器文件,再前向混合,进入ALU4个算数计算器,3个地址生成器。Zen3代的寄存器条目增加到212个。浮点方面寄存器略少,FADD和FMA分别是加法和乘法管线,管线有4条,Zen3代增加到6条,不过计算管线还是4条。

 

图片来源:互联网

 

最后是加载和写入部分。

 

Zen2 Die Shot

 

图片来源:互联网

 

Zen 2代一个核的透视图,可以看到缓存占芯片的面积最大,其次是浮点运算用的SIMD,然后是分支预测,加载与写入,译码,计算用的ALU所占面积很小。


关键字:汽车SoC  CPU  微架构 引用地址:深入了解汽车系统级芯片SoC连载:CPU微架构

上一篇:Ouster推出先进汽车数字激光雷达芯片Chronos
下一篇:安森美的碳化硅和感知业务

推荐阅读最新更新时间:2024-11-13 13:25

掌握方法和技巧轻松学习51单片机
单片机是微机的一种,现时有8051、AVR、ARM7、ARM9等系列,其中 “8051”是源自于Intel公司的MCS-51系列芯片,但目前不同生产厂商都以其兼容芯片为主,如Ateml公司的89C51/89S51系统,宏晶公司的STC89C52RC。本文所述的正是宏晶的STC89C52RC,该芯片烧写简单,只用通过宏晶的工具通过串口MAXRS232的TX、RX脚位就可以将程序烧录到芯片,是一个非常不错的嵌入式入门基础,教程多、51系列的学习板普遍就是采用STC89C52RC的芯片,可见其通用性很广,那怎样才能快速学习8051单片机呢。 学习51系列的CPU需要记忆脚位功能,我学习的时候得益于其简单的熟记方法,脚位的功能与位置掌
[单片机]
掌握方法和技巧轻松学习51单片机
OPPO Reno8系列配置全曝光,将首发两款CPU
近日,即将于本月正式发布的OPPO Reno8系列手机曝光了相关配置。消息称该系列已基本确定将有三款机型同时亮相,分别是OPPO Reno8、OPPO Reno8 Pro以及OPPO Reno8 Pro+。   据知名数码博主@数码闲聊站爆料,OPPO Find系列中的自研NPU芯片马里亚纳将下放到Reno8系列,搭载的机型将是OPPO Reno8 Pro与OPPO Reno8 Pro+。   据悉,OPPO Reno8系列将实现两个首发:Reno8 Pro将全球首发骁龙7 Gen 1,Reno8国内首发联发科天玑1300。而OPPO Reno8 Pro+将会选择比较主流的天玑8100-Max,值得一提的是,天玑81
[手机便携]
比特币「挖矿」强过CPU 高端显示适配器疯涨40%
虚拟货币比特币 价格暴涨,却意外让高端显示适配器价格疯涨,近 2 个月上涨了 25-40%,主因是有人大量购买显示适配器用来「挖矿」比特币,因为显示适配器「挖矿」的效果强过 CPU。 中新网 21 日援引《北京青年报》报导,市场上的主流显示适配器主要来自 AMD(AMD-US) 和 NVIDIA(NVDA-US),分别被称为 A 卡和 N 卡。但供不应求导致价格狂飙。 从 6 月份开始,A 卡几乎断货,N 卡价格飙高,NVIDIA1070 型号 8G 显示适配器已卖到 3700 元 ,比 2 个月前涨了 1000 多元;NVIDIA1060 型号的显卡现在售价为 2600 元 ,比 2 个月前涨了 600 多元。 目前市面上尚在出
[半导体设计/制造]
AVR汇编初探之一《AVR单片机的CPU内部结构》
学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。 下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。 AVR单片机的CPU内核结构 如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,可以看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。 AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在执行一条指令的同时,就将PC中指定的下一条指令取出,构成了一级流水线运行方式,实现了一个时钟周期执行一条指令,数据吞吐量高达1MIPS/MHz。 AVR CPU内核由几个重要的部分组成,它们分别是: A.算数逻辑单元ALU(Ari
[单片机]
AVR汇编初探之一《AVR单片机的<font color='red'>CPU</font>内部结构》
自动驾驶中的DCU、MCU、MPU、SOC汽车电子架构分析
摘要 本文探讨了自动驾驶中的DCU、MCU和MPU在电子电气架构中的作用,比较了分布式与集中式架构的优势,以及ADAS系统从L0-L2+的发展历程。着重分析了MCU和MPU的区别,以及它们在汽车智能化和网联化趋势下的关键角色。 自动驾驶中的DCU、MCU、MPU 1.分布式电子电气架构 2.域集中电子电气架构架构 2.1通用硬件定义 3.车辆集中电子电气架构 4.ADAS/AD系统方案演变进程梳理 4.1L0-L2级别的ADAS方案 4.2L2+以上级别的ADAS方案 5.MCU和MPU区别 5.1MCU和MPU的区别 5.2CPU与SoC的区别 5.3举个
[汽车电子]
研究者又发现8个CPU新漏洞:与Metldown/Spectre相似
德国计算机杂志《c't》本周四报道称,研究人员在计算机CPU内找到8个新漏洞,这些漏洞与Metldown、Spectre有点相似。 杂志还说,英特尔准备发布补丁,修复漏洞,ARM的一些芯片也受到影响,至于AMD芯片是否也存在同样的问题,研究人员正在调查。《c't》没有披露信息的来源,因为研究人员会优先通知相应公司,在公司找到修复补丁之后再公开自己的发现。 1月份,研究人员发现了Meltdown和Spectre漏洞,谷歌Project Zero就是最早发现的团队之一。这一次,其中一个漏洞也是Project Zero发现的,因为90天内禁止公开,所以在5月7日之前不能公布自己的发现。 英特尔代表拒绝对德国杂志描述的漏洞发表评论。在
[嵌入式]
研究机构:手机芯片将替代超级电脑CPU
    西班牙一支研究团队查看了处理器的发展史,他们认为终有一天,智能手机芯片将替代更昂贵、能耗更高的X86处理器,用在超级电脑中。巴塞罗那超级计算中心研究者表示:“历史总是在重复。移动处理器是否已经为超性能计算机准备就绪?”研究报告本月在德国发表。 芯片大战 研 究人员指出,历史上,较便宜的芯片增长更快、价格更高的处理器从高性能系统中扫荡出局。1993年时,超级电脑500强基本被向量处理器。后来,它被更便 宜的RISC处理器替代(比如IBM Power处理器),10多年前,RISC处理器在超级电脑中的使用达到高峰。最终,RISC处理器又被更便宜的商用处理器(英特尔Xeon、AMD Opteron)替代,目前超级电脑500强有400
[手机便携]
CPU读/写存储器的步骤过程举例说明
存储器的读操作。例如,若要将存储器40H中的内容50H读出,其过程如下:   ①CPU将地址码40H送到地址总线上,经存储器地址译码器选通地址为40H的存储单元:   ②CPU发出“渎”信号,存储器读/写控制开关将数据传输方向拨向“读”;   ③存储器将地址为40H的存储单元中的内容50H送到数据总线上;   ④CPU将数据总线上的数据50H读人指定的某一寄存器。   对存储单元的读操作,不会破坏其原来的内容。相当于复制。   2)存储器的写操作。例如,若要将数据ABH写入存储器地址为CDH的存储单元中,其过程如下:   ①CPU将地址码CDH送到地址总线上,经存储器地址译码器选通地址为CDH的存储单元;   ②C
[模拟电子]
小广播
最新汽车电子文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved