JONY

推测执行技术

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

德州仪器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个表项的地址缓冲区判断跳转的目标地址。如果前端发现程序正在执行“紧凑的小循环”,会把循环装入快速循环旁路缓存,用于优化速度和能耗。… 阅读全文

因特网的组成

因特网的组成因特网的功能就是把全世界的上网设备连接,让它们可互相传递信息。假设全世界有\(N\)个上网设备,若让他们直接互联肯定不现实,其需要\(N^2\)量级的直连“通路”,故这些设备需中间设备进行“集线”,如上图所示。这就是简化版的因特网结构,这个结构类似于图数据结构。下面给出相关概念: 1) 节点:上图中的节点,可以按连接关系分为两类: 1.1) 边缘节点:上图中不被其他节点途径的节点。这些节点被称为主机或者端,是有直接上网需求的设备,比如手机、笔记本电脑、服务器、共享单车等等; 1.2) 核心节点:上图中的其他节点,一般是路由器、交换机、集线器等。是支持边缘节点上网的设备; 2) 链路:上图种的边,作用是连接节点。一般是水晶头双绞线、同轴电缆、光纤、微波等; 网络这个概念是递归的,即整个因特网是由多个子因特网组成的。如上图左边的子因特网,其由3个手机和1个核心节点组成,有时为了简化问题可以把他们当成一个节点。小网络连接的是多个主机,大网络连接的是多个网络。通常会把从主机出发遇到的第1个交换机或路由器称为边缘交换机或边缘路由器。与之相对的同样有核心交换机和核心路由器。后者的造价和体积往往大于前者。… 阅读全文

因特网的评价指标

性能指标1) 速率:因特网终端最终发出接受的信号基本都是数字信号,其信息量的单位是比特(bit),即1位的二进制数0或1。因特网速率的单位是比特/秒,即bit/s,也写作b/s或bps(bit per second); 2) 带宽:传统模拟信号中的带宽是指通道能接受的频带宽度,单位是赫兹,这是种频域的观点。对于因特网而言,带宽基本上和速率一定程度上等价,速率是种时域的观点; 3) 吞吐量:即单位时间最大可通过信息量,其单位也是速率的单位,有时还会用帧每秒表示; 4) 时延:时延是数据从一端到另一端的时间,分为如下几种。前两种最重要。 4.1) 发送时延:定义是“端或交换机发出数据帧所需要的时间”,这里把数据帧当成连续的一些bit即可。也就是说发送时延等于“即将发出数据帧的第1个bit”到“发出数据帧的最后1个bit”之间的间隔时间。发送时延通常仅关于发送设备本身,和外部的链路、传输距离等无关;… 阅读全文

因特网的体系结构

OSI参考模型ISO在1977年成立专门的机构,用于研究如何让不同计算机之间互相通信,该机构提出了开放式系统互联通信参考模型(Open System Interconnection Reference Model),简称OSI,是一种用于在未来实现“互联”的标准的开放框架,旨在实现“任何设备只要实现了OSI,就能够和世界各地的其他OSI设备进行通信”。这个标准提出后得到世界各国的支持,并在90年代作为了ISO国际标准。 这里不剖析这7层的具体涵义,只需知道它们间的关系类似于软件工程中的“面向对象设计”,其中的每层都是对更低1层进行“包装”的。当有两个应用层的程序需要互相通讯的时候,数据会层层“解封”成为物理层的电学信号,在传递到另一端后,又层层“封装”成为应用程序数据。终端往往其需要完整的7层(刷微博),而对于核心部分的分组交换机,通常只需要3层(路由器需要3层,2层交换机需要2层)。… 阅读全文
滚动至顶部