计算机系统

现代计算机系统的硬件结构

现代计算机系统的硬件结构                  现代计算机系统中的主要硬件是CPU、内存、IO设备、总线(bus),因为它们共同实现了冯·诺依曼结构的主要功能。需要明确这几种硬件不一定完全是物理上互相独立的实体,下面先简单描述它们的功能和结构: 1) 总线:用于在多个硬件之间或多个计算机系统之间实现标准化的连接与数据传输的系统。通常认为总线指硬件,但总线也可泛指相关的标准、协议、软件等。计算机系统中通常包含多种总线,同一种总线还可能有很多个(条)。上述其他硬件通过多种总线互连,它们内部的各个模块也可能通过多种总线互连,而不同总线之间可通过桥片(bridge)这种硬件互连; 2) 内存:配合内存控制器(memory controller)实现冯·诺依曼结构中的内存。内存具备存储能力,其通过内存总线直连内存控制器,再由内存控制器统一处理按内存地址读写的请求。通常将内存和内存控制器统称为内存系统(memory… 阅读全文

处理控制冒险的分支预测技术

分支预测分支预测技术是用于处理控制冒险的。这里借上图中的一段高级语言的IF-ELSE程序,及其对应的某种汇编语言来讨论分支预测,汇编包含1个条件跳转指令(BR)、1个无条件跳转指令(BNE)。 首先,上面的无条件跳转指令看起来似乎容易处理,因为其目的地址不会改变,似乎能直接让取值单元取目的地址的指令,但在很多计算机里并不能这样,这由流水线本身的特点决定。在这样的计算机里,当译码单元“发现”无条件转移指令时,取指单元已经在取其后面的指令了。换句话说,无条件跳转的下一条指令已经上了流水线。这时解决的办法是干脆让这条指令执行完,然后再去执行跳转到的指令。这种情况是很难让人接受的,因为完全不符合前后次序。不过有2种“通融”方式: 1) 默认把所有无条件转移指令的下一条指令“当作”其上一条指令来执行; 2) 让所有无条件转移指令的下一条指令都是NOP;… 阅读全文

处理数据冒险的乱序执行技术

顺序执行与数据冒险为讨论乱序执行技术,先引入一种超标量计算机,并先讨论其上的顺序执行,所谓顺序执行就是前面讨论的流水线的执行方式,即指令都按流水线的方向完成其各个步骤。 该机器包含R0~R7共8个指令层可见的寄存器,其所有算术指令都由3个寄存器完成(比如R0=R1+R2)。而超标量意味该机器的流水线是有“分支”的,2个分支能“同时”完成计算并写回公共的R0~R7寄存器,这种分支流水线通常是每个分支有自己独立的ALU等硬件。 该机器执行算术指令的时序是这样,如在第n周期译码,则在第n+1周期开始执行,加减在第n+2周期结束时把结果写入寄存器,乘法则要多占1个周期。比如第k周期发射2个加法指令,如寄存器不冲突,第k+2周期结束时,和就分别在2个寄存器里。译码器能在1个周期里译码和发射指令,也可之后发射。… 阅读全文

推测执行技术

基本块程序可划分成数个基本块,基本块包含多条顺序执行的指令,且只有一个入口和一个出口。一个入口意味着整个程序中不能有跳转类指令进入基本块第一条指令后的指令,一个出口意味着基本块最后一条指令才能是跳转指令。上图给出了一段高级语言程序,其包含多个基本块。 前面在讨论乱序执行时,使用到的汇编程序完全由算术指令构成,不包含跳转指令。所以说前面讨论的乱序执行仅适用于基本块内部,这有较大的局限性,因为实际程序中的基本块通常都很短,且基本块间不一定能并行。所以乱序执行只有跨越基本块边界才能有更大效果。而跨越基本块则意味着执行可能不应该执行的指令,这种不知道是否需要执行就提前执行的技术统称为推测执行技术。对于很多硬件来说,其无法支持跨越基本块的乱序执行,所以这部分工作也会交给编译器完成,称为指令重排。  … 阅读全文

德州仪器OMAP4430及其缓存与LPDDR2内存操作

OMAP4430片上系统   OMAP4430是德州仪器2011年的产品,基于德州仪器第4代OMAP(开放式多媒体应用平台)架构。使用OMAP4430片上系统的代表产品有LG Optimus 3D、Motorola Milestone 3、Motorola Atrix等。这款芯片是一个片上系统(SoC),所谓SoC就是指芯片中不仅包含CPU的部分,还可能包含GPU、手机通信基带等等。目前SoC和CPU之间的区别越来越小,比如INTEL的CPU需要和主板上的INTEL芯片组一起工作,在之前INTEL主板有北桥芯片和南桥芯片,后来北桥芯片就装进了CPU内,主板上就只剩下了南桥芯片,也就是说后来的INTEL处理器也可看作SoC。   内部结构OMAP4430和酷睿的最大区别是其使用ARM指令集,其应用场景不在PC/笔记本,在高性能的移动/嵌入式场景,比如智能手机、平板、物联网设备等。这里来看OMAP4430内部的模块:… 阅读全文

爱特梅尔ATMEGA168及其管脚信号

ATMEGA168单片机 单片机又叫微控制器,其和前面提到的两种CPU/SoC有很大区别,后两者属于不同场景的高性能芯片。其中OMAP4430的应用场景和单片机可能重合度高,但两者性能差别很大。所谓单片机就是指把所有东西都放到芯片里(包括内存等),整个电脑就只有一个芯片。通常单片机的性能差,但其价格低廉,ATMEGA168的价格不到1美金。单片机通常被用作微波炉、洗衣机的”CPU”的。从上面两张图片可以看出,该单片机的封装方式和前面两种CPU/SoC不太相同,并且其仅有28个管脚,管脚少的一部分原因是因为该单片机不需要很多管脚连接内存和很复杂的总线。   管脚信号和内部结构ATMEGA168用于取代复杂的地址总线、数据总线跟外部进行通信的是数字IO接口,其中PD有8个管脚、PB有8个管脚,PC有7个。这种接口的每个管脚可被软件配置成输入/输出管脚。PC的其中6个管脚更是可被直接配置成模拟信号的输入/输出管脚,比如这种模拟信号管脚可以接入温度传感器,这种传感器的输出直接就是变化的电压值,这个值会被特定函数计算出对应的温度值。ATMEGA168的其他管脚包括地线(GND)、用于配置模拟电路的AVCC/AREF、电源输入(VCC)。… 阅读全文

PCI系统总线

PCI总线这里先分析用“古老的”电脑看电影大概需要多少的总线带宽这个问题。这里设需要按1024*768分辨率、30FPS、24位真彩色的规格展示视频,那么色彩决定每个像素需要3个字节(24位),1024*768个像素是2 359 296字节,每秒需要30个帧共67.5MB,所以需要67.5MB/s的带宽。不过这只是“显示”占用的带宽,实际播放过程是先把外存数据载入内存,再把内存数据变为图像。考虑到“古老的”电脑只有1条总线,没有独立显卡(集成显卡的显存就是内存),内存不足以把电影一次性装入内存。所以播放过程是2阶段流水线式的“一边读外存数据到内存、一边把内存数据用于播放视频”,这样2个阶段的流量会同时被1条总线承载,所以实际需要翻倍的135MB/s的总线带宽。 早期使用ISA总线的IBM PC没有图形用户界面(GUI),这时的计算机在显示器上输出内容时,总线带宽不受上述分析的限制。后来进入Windows时代,这时的计算机可以在显示器上输出复杂的图形界面,那么这时的计算机就会受上述分析的限制。由于ISA总线只有16.7MB/s的带宽,由ISA升级来的EISA总线也只有33MB/s的带宽,于是这时候的总线成为了计算机性能的瓶颈。… 阅读全文

INTEL酷睿I7的微体系结构

功能模块上图为酷睿I7的每个核心的组成结构,其包括如下4大部分: 1) 内存子系统:内存系统的一部分,不包括核心外的L3缓存、主板上的内存; 1.1) L2缓存:不区分指令和数据,为256KB的8路组相联结构,缓存块大小为64字节; 1.2) 系统接口:连接到L3缓存,L3缓存也不区分指令和数据,大小为1-20MB(根据产品型号确定,比如i5、i3等),采用12路组相联结构,缓存块大小为64字节。L3缺失时继续访问DDR3内存总线; L1缓存和内存子系统间存在未画出的2个预取单元,第1个是按内存块大小预取的。第2个是按步长预取的,当CPU总以连续的k个地址(步长)取数据时,该预取单元会获取到这个步长,并根据这个步长预取数据,这种预取策略考虑的是便于操作数组等数据结构。 2) 前端:取指令并将指令译码为微操作序列,酷睿的微操作和RISC处理器的微操作风格类似。并且能够把译码前的指令装入L1指令缓存,把译码后的微操作装入微操作缓存(INTEL内部称为L0缓存);… 阅读全文

PCIE系统总线

PCIe总线随着技术发展,PCI的带宽已成为新IO设备的瓶颈,且PCI总线的插槽设计的也不是很合理,所以人们试着提出新总线标准。目前在主流PC、服务器中,占据统治地位的PCI总线的继任者是PCIe总线,全称为PCI Express总线。这种总线标准也是Intel提出的,其实际上和PCI总线几乎没有关系。可能Intel是因为考虑到PCI这几个字母已经成为了“品牌”,所以打算在名称上继续沿用它。 PCIe的核心在于它彻底抛弃了作为“连接众多设备的并行公共导线”的传统总线功能,取而代之的是提供基于“高速点对点串行连接设备”的总线功能。这就是为什么说PCIe和PCI是完全不同的,PCIE从局域网、交换以太网中借鉴了许多重要的思想,这使得PCIe非常的强大。 Intel在中后期版本的Intel奔腾4对应的主板上开始提供PCIe总线,上图提供了1种包含PCIe总线的计算机结构。其中CPU与内存仍采用原方式连接,IO设备则是经过PCIe所提供的交换网络与桥接芯片通信的,这里的交换网络是个逻辑概念,因为其功能通常被内置到CPU或桥接芯片中。… 阅读全文

德州仪器OMAP4430的微体系结构

功能模块OMAP4430上有2个ARM Cortex A9处理器核心,使用ARM v7指令集。该核心是32位的,使用32位的寄存器、数据通路、存储总线。与INTEL酷睿处理器不同,该核心是真正的RISC处理器,其使用的指令本身就是类似于微操作的。上图为其大致的组成。 A9比酷睿的微体系结构简单很多,但两者的关键部件有很多相似的地方。比如A9也使用了两级的高速缓存,但其L2缓存只有1MB。L1指令缓存是32KB的四路组相联结构,块大小为32字节。由于大多数ARM v7指令是4字节的,所以L1指令缓存可容纳8K条指令,比酷睿的微操作缓存的容量要大。L1数据缓存也是32KB的四路组相联结构,块大小为32字节。 指令发射单元每个时钟周期能至多发射4条指令。遇到条件分支时会根据4K个表项的分支预测器判断跳转是否发生,如果预测发生,再去1K个表项的地址缓冲区判断跳转的目标地址。如果前端发现程序正在执行“紧凑的小循环”,会把循环装入快速循环旁路缓存,用于优化速度和能耗。… 阅读全文
滚动至顶部