逆向工程ARM1处理器

Ken Shirriff的文章翻译
几乎每个智能手机都使用基于1985年推出的ARM1芯片的处理器。 超过100亿个ARM内核已用于各种设备中,其中包括苹果最大的故障之一,牛顿Pocket PC,以及最震撼的成功之一,iPhone。 在本文中,我们将考虑ARM1处理器的关键部分:我们将描述芯片的总体结构,研究晶体管的排列方式和功能,相互交互以存储和处理数据,并研究该微处理器的可视化仿真并了解发生了什么在ARM1内部运行。

图片

ARM1芯片概述


ARM1微处理器由功能块构成,每个功能块都有特定的用途。 寄存器存储数据,ALU执行简单的算法,命令解码器确定如何执行每个命令,依此类推。 与大多数处理器相比,ARM1芯片电路简单,并且每个功能块都有明显的区别。 为了进行比较,手动优化了诸如6502或Z-80之类的芯片布局,以避免基板上出现空点。 在这些处理器中,功能块粘合在一起,这使它们难以理解。

图片
ARM1芯片的主要组件。 未标记的触点是不同的控制信号。

现在,您将看到一张显示ARM微处理器最重要的功能部件的图像。 实际处理发生在芯片底部,即数据路径。 该芯片一次处理32位,因此其结构包括32个水平层:从顶部开始31位,从底部开始0位。 数条数据总线可水平运行以通信芯片的各个组件。 在图像上,您可以看到大部分的25个寄存器。 指令计数器(第十五个寄存器)在寄存器部分的左侧,零寄存器在右侧。 在25个寄存器中,有9个是可选的,因为有些寄存器的副本可用于中断处理。

所有计算均在算术逻辑单元(ALU)中进行,该单元位于寄存器块的右侧。 ALU执行16种不同的操作:加法,加法加法运算,减法,逻辑加法等等。...ALU使用两个32位输入,并在输出处输出32位。 您可以在此处阅读有关ALU设备的更多信息。 ALU的右侧是一个32位移位设备。 这个大组件执行二进制输入循环移位操作。 左侧是地址线,可通过地址触点访问内存中的地址。 右侧是读取和写入数据值到存储器的数据线。

控制单元位于顶部。 控制线从控制单元垂直绘制到下面的数据线图。 这些信号选择寄存器,告诉ALU执行哪个操作,依此类推。 指令解码电路处理每个指令并产生必要的控制信号。 寄存器解码单元处理指令中的寄存器选择位,并生成控制信号以选择所需的寄存器。

联络资料


图像外表面周围的正方形是将处理器连接到外界的垫。 下图显示了ARM1微处理器的八十四针外壳。 镀金触点连接到壳体内部硅芯片上的焊盘。

图片
安装在Acorn ARM评估系统中的ARM1处理器

大多数站点都用于地址线和通向存储器的数据线。 该芯片具有26条地址线,可访问64兆内存和32条数据线,从而一次可读取或写入32位。 地址线在左下角,数据线在右角。 在芯片的仿真模型中,您可以看到信号已发送到内存地址线,并且沿着数据线读取了来自内存的信息。 模拟器的右侧显示以十六进制格式显示的地址和数据值。 如果您知道十六进制系统,则可以轻松地将这些值与接触状态相关联。

芯片的每个角都有电源线(+)和地线(-),可提供5伏的电源电压,这对于芯片的操作是必需的。 各种控制信号位于芯片的顶部。 在模拟器中,很容易注意到设置时钟脉冲的两个时钟信号。 相1和相2的频率交替变化,提供了芯片工作所需的时钟信号。 在我们的视觉仿真中,它每秒大约活跃两次,但实际芯片的频率为8兆赫,快一百万倍。 注意芯片上的制造商名称“ ACORN”,而不是82引脚。

图片
两个定时信号

ARM处理器历史


ARM1微处理器是由Acorn Computers的工程师Sophie Wilson和Steve Farber在1985年设计的。 最初,该芯片称为Acorn RISC Machine,旨在用作BBC Micro计算机的协处理器。

图片
索菲·威尔逊(Sophie Wilson)和史蒂夫·法伯(Steve Farber)

总共生产了几百个ARM1微处理器,因此您可能会认为它已被1980年代微处理器历史的遗忘所遗忘。 但是,第一个ARM1芯片导致了令人惊讶的成功ARM架构,拥有超过500亿个芯片。 怎么了

在1980年代初期,科学研究表明,如果简化处理器指令集,开发人员将获得更好的性能-处理器将变得更简单但更快:具有减少的指令集的计算机或RISC(简化的指令集计算机)。 StanfordBerkeley的研究启发了ARM开发人员选择RISC架构。 此外,鉴于橡果研发小组很小,选择RISC是一个切实可行的解决方案。

在基于RISC的计算机上,指令集仅限于最常用的指令集,针对高性能进行了优化,并在单个时钟周期内执行。 指令又是固定大小,可简化解码指令的逻辑。 RISC处理器需要更少的电路来进行命令控制和解码,从而使您可以在芯片上放置更多组件。

当比较同年发布的ARM1和Intel 80386微处理器时,RISC设计的简单性显而易见:ARM1拥有约2.5万个晶体管,而80386具有27.55万个。 以下是两张相同比例的处理器照片。 ARM1晶体的面积为50平方毫米,而第386晶体的面积为104平方毫米。

图片图片

由于晶体管的数量少,ARM1处理器的功耗很低:仅为瓦的十分之一,而在386瓦时几乎为2瓦。 高性能和低功耗的结合使ARM微处理器的更高版本在嵌入式系统中非常受欢迎。 苹果为其命运不佳的Pocket Newton系统选择了ARM处理器。 1990年,橡果计算机公司,苹果公司和芯片制造商VLSI Technology创建了Advanced RISC Machines,以继续开发ARM。

从那时起,ARM成为最受欢迎的架构,拥有超过500亿个处理器。 大多数移动设备使用ARM微处理器。 例如,iPhone 6内的Apple A8处理器使用64位ARMv8-A。 尽管他的起步很卑鄙,但ARM1还是在IEEE Spectrum名单中列出了25个令人震惊的芯片,并成为有史以来PC World最具影响力的微处理器。

有趣的是,ARM不生产芯片。 相反,ARM知识产权已被许可给数百个使用ARM架构制造芯片的不同公司。

底层芯片结构


微处理器ARM1由五层组成。 如果在仿真模型中增加芯片的比例,则可以看到从这些层构建的芯片组件。 仿真模型为每一层使用特定颜色,并使用其颜色指定活动线。 底层由硅组成,晶体管位于其上。 在生产过程中,使用各种杂质对硅区域进行改性(合金化)。 可以正掺杂硅以形成P-MOS晶体管(蓝色),也可以负掺杂N-MOS晶体管(红色)。 非合金硅基本上是绝缘体(黑色)。

图片
模拟器ARM1用自己的颜色显示各个图层。

绿色标记的多晶硅线施加在硅上。 多晶硅越过掺杂的硅时,会形成晶体管栅极(黄色)。 最后,用灰色表示的两层金属位于多晶硅的顶部并提供导电性。 黑色方块是在不同层之间形成键的触点。

为了我们的目的,可以将MOS晶体管视为由门控制的开关。 开启(关闭)时,硅区域中的漏极和源极相连。 断开连接(断开)时,漏极和源极断开连接。

图片
MOSFET结构

像大多数现代处理器一样,ARM1是使用CMOS技术构建的,该技术使用两种类型的MOS晶体管:N沟道和P沟道。 仅当将高电平信号施加到栅极并将输出拉至地时,N沟道MOSFET才会导通。 当将低电平信号施加到栅极并且将高达5伏的电压施加到输出时,P沟道MOSFET导通。

寄存器文件的概念


寄存器文件是ARM1的关键组件,可在芯片内部存储信息。 寄存器文件由25个寄存器组成,每个寄存器包含32位。

下图显示了两个构成反相器的晶体管。 如果输入高电平信号,则N-MOS晶体管(红色)导通,将输出接地,因此输出为低电平信号。 如果输入接收到低电平信号,则P-MOS晶体管(蓝色)导通,将电源线连接到输出,以便输出具有高电平信号。 因此,输出与输入相反,从而形成一个反相器。

图片
逆变器

回路中两个逆变器的组合形成一个简单的存储方案。 如果在第一个逆变器1的输出上,第二个产生0,该数字到达第一个逆变器的输入,并且在其输出上创建1-电路是稳定的。 因此,电路将无限期地保持在该状态,“记住”一位直到被强制转移到另一种状态。

图片
两个反相器组成一个寄存器,可以存储1位

为了在使用的寄存器单元中创建这样的方案,添加了读取和写入线,以及用于将单元连接到总线的选择线。 当记录线被激活时,总线与逆变器接触,从而允许您用新的位覆盖当前值。 同样,当相应的选择线被激活时,晶体管会将位连接到读取总线,从而允许您读取存储的值。

图片
寄存器文件ARM1的一位的方案

要创建寄存器文件,必须将寄存器单元的每个位垂直重复32次,水平重复25次以形成每个寄存器。 每个寄存器具有三条水平线-一条记录线和两条读取线。 每个寄存器具有三条垂直控制线-一条记录选择线和两条读取选择线。 当激活所需的控制线时,可以读取两个寄存器,一次可以写入一个寄存器。 在仿真模型中-您可以看到活动的垂直控制线,用于选择在水平总线上移动的寄存器和数据位。

通过查看模拟器中的存储单元,可以确定哪个反相器处于开启状态,并确定位0或1是否相等;如果上位反相器的输入有效,则该位为零。 如果下变频器的输入有效,则该位等于1。 因此,仔细查看后,您可以直接从模拟器读取寄存器的值。

图片
寄存器文件ARM1的图像

快换装置


快速移位设备执行二进制移位,是ARM1的另一个有趣组件。 大多数指令使用移位器,可让您将二进制参数左右,左移或替换任何字符(从0到31位)。 在模拟器启动期间,您可以看到对角线以快速移位的方式左右移动。

下图显示了剪切装置的结构。 比特相对于零和第三十一比特垂直移位。 输出位在从底部开始的零位和从顶部开始的第三十一位之间水平移位。 对角线表示垂直线与水平线的连接位置,从而产生输出偏移。 对角线的不同位置导致不同的偏移。 上方的对角线将位向左移动,下方的对角线向右移动。 在换档期间,两个对角线均处于活动状态。 它可能是难以察觉的,但在单词的移位部分中,该部分向右移动,通常向左移动。

图片
快速剪切装置结构

让我们扩大剪切设备的面积,以更好地了解其主要组件。 它包含32 x 32的晶体管横截面,每个横截面将一条垂直线连接到一条水平线。 晶体管栅极通过对角线控制线连接; 沿有源对角线的晶体管连接相应的垂直和水平线。 因此,通过激活相应的对角线,将输出线连接到移位一定位数的输入线。 由于微电路的输入线是水平操作的,因此在输入线和相应的垂直位线之间存在32个连接。

图片
仔细研究ARM1快速转换设备

结论


ARM1微处理器带来了令人惊讶的成功ARM处理器体系结构,这是您的智能手机和所有移动设备的心脏。 与80386结构相比,ARM1芯片的简单RISC架构简化了对微处理器电路的理解,迷人的ARM微处理器可视化仿真有助于了解其内部发生的情况。

本文创建的视频: CPU内部:ARM1

Source: https://habr.com/ru/post/zh-CN411425/


All Articles