目前有 2 代 CPU 核心实现了 Alpha 架构
对于 "EV" 代表什么,人们的看法不一(编者注:真正的答案当然是 "Electro Vlassic" [1]),但这个数字代表了核心所采用的 Digital 公司 CMOS 技术的**第一代**。因此,EV4 最初是在 CMOS4 中实现的。随着时间的推移,CPU 往往会通过光学收缩到下一代 CMOS 工艺中来获得中期性能提升。那么,EV45 就是在 CMOS5 工艺中实现的 EV4 核心。将设计收缩到特定技术中,与从头开始在该技术中实现设计之间存在很大差异(但现在我不想深入探讨这一点)。这里还有一些其他的例外情况:还有 CMOS4S(CMOS4 中的光学收缩)和 CMOS5L。
真正的技术爱好者会很想知道,CMOS4 是 0.75 微米工艺,CMOS5 是 0.5 微米工艺,CMOS6 是 0.35 微米工艺。
为了将这些 CPU 核心映射到芯片,我们得到
EV4(最初),EV4S(现在)
EV4S
EV45
LCA4S(EV4 核心,带有 EV4 FPU)
LCA45(EV4 核心,但带有 EV45 FPU)
EV5
EV56
EV4 核心是双发射(每个 CPU 时钟周期可以发射 2 条指令)超标量流水线核心,带有整数单元、浮点单元和分支预测。它完全旁路,并具有 64 位内部数据路径和紧密耦合的 8KB 缓存,指令和数据各一个。这些缓存是直写式(它们永远不会变脏)。
EV45 核心对 EV4 核心进行了一些调整:它有一个略微改进的浮点单元和 16KB 缓存,指令和数据各一个(它还具有缓存奇偶校验)。(编者注:Neal Crook 在另一封邮件中指出,对浮点单元 (FPU) 的更改提高了除法器的性能。EV4 FPU 除法器对于单精度除法需要 34 个周期,对于双精度除法需要 63 个周期(非数据依赖)。相比之下,EV45 除法器对于单精度除法通常需要 19 个周期(最多 34 个周期),对于双精度除法通常需要 29 个周期(最多 63 个周期)(数据依赖)。)
EV5 核心是四发射核心,也是超标量流水线、完全旁路等等。它具有紧密耦合的 8KB 缓存,I 和 D 各一个。这些缓存是直写式。它还具有紧密耦合的 96KB 片上二级缓存(Scache),它是 3 路组相联和回写式(它可以是脏的)。EV4->EV5 的性能提升不仅仅是通过时钟速度提升实现的。除了更大的缓存和四发射之外,还有微架构方面的改进,以减少某些路径中的生产者/消费者延迟。
EV56 核心在根本上与 EV5 的微架构相同,但它添加了一些用于 8 位和 16 位加载和存储的新指令(请参阅 字节和所有那些东西 部分)。这些指令主要供设备驱动程序使用。EV56 核心是在 CMOS6 中实现的,CMOS6 是一种 2.0V 工艺。
21064 于 1992 年 3 月发布。它使用 EV4 核心,带有 128 位总线接口。总线接口支持“轻松”连接外部二级缓存,块大小为 256 位(总线上 2 个数据节拍)。Bcache 时序完全可软件配置。21064 也可以配置为使用 64 位外部总线(但我不确定是否有任何出货系统使用这种模式)。21064 不对 Bcache 施加任何策略,但它通常配置为回写缓存。21064 包含允许外部硬件维护 Bcache 和内部缓存缓存一致性的钩子,但这很棘手。
21066 使用 EV4 核心,并集成了内存控制器和 PCI 主桥。为了节省引脚,内存控制器具有 64 位数据总线(但内部缓存的块大小为 256 位,就像 21064 一样,因此填充一个块需要总线上 4 个节拍)。内存控制器支持外部 Bcache 和外部 DRAM。Bcache 和 DRAM 的时序完全可软件配置,并且可以控制到 CPU 时钟周期的分辨率。填充缓存块的 4 节拍过程并不像听起来那么糟糕,因为 DRAM 访问是在页面模式下完成的。不幸的是,内存控制器不支持任何新的深奥的 DRAM(SDRAM、EDO 或 BEDO)或同步缓存 RAM。PCI 总线接口完全符合 rev2.0 标准,运行速度高达 33MHz。
21164 具有 128 位数据总线,并支持拆分读取,在任何时候最多可以有 2 个未完成的读取(这允许在最佳情况下的理想条件下实现 100% 的数据总线利用率,即理论上您可以在每个总线时钟上传输 128 位数据)。21164 支持轻松连接外部三级缓存 (Bcache),并具有允许外部系统维护与所有缓存的完全缓存一致性的所有钩子。因此,对称多处理器设计“很容易”。
21164A 于 1995 年 10 月发布。它使用 EV56 核心。它在名义上与 21164 引脚兼容,但需要分离的电源轨;21164 上所有为 +3.3V 电源的电源引脚现在已分为两组;一组为 CPU 核心提供 2.0V 电源,另一组为 I/O 单元提供 3.3V 电源。与旧的实现不同,21164 引脚不耐受 5V 电压。这种更改的最终结果是,21164 系统通常无法升级到 21164A(但请注意,设计一个也可以容纳 21164 的 21164A 系统相对简单)。21164A 还有几个新引脚来支持新的 8 位和 16 位加载和存储。它还改进了 21164 对使用同步 SRAM 来实现外部 Bcache 的支持。