我应了解的系统结构

标签: 系统 结构 | 发表时间:2013-07-22 21:54 | 作者:kangquan2008
出处:http://blog.csdn.net

 

我应了解的系统结构

1. 单核微架构:

1.1. 处理器架构[http://blog.csdn.net/wyzxg/article/details/5027738]

x86、ARM、MIPS算是是目前最常见也相对最知名的处理器架构了。

1.2. 指令集

指令集主要分为两类:CISC和SISC,有时又从SISC把VILW、EPIC分出来,各当一类

l CISC: 

特点:

1.指令系统庞大,指令功能复杂,指令格式、寻址方式多;

2.绝大多数指令需多个机器周期完成;

3.各种指令都可访问存储器;

4.采用微程序控制;

5.有专用寄存器,少量;

6.难以用优化编译技术生成高效的目标代码程序;

属于CICS的处理器架构:

x86 :386开始32位

x64(即x86-64)  :64位的x86

l RISC: 

特点:

1.统一指令编码(例如,所有指令中的op-code永远位于同样的位元位置、等长指令),可快速解译;

2.泛用的暂存器,所有暂存器可用于所有内容,以及编译器设计的单纯化(不过暂存器中区分了整数和浮点数);

3.单纯的寻址模式(复杂寻址模式以简单计算指令序列取代);

属于SICS的处理器架构:

IBM 的 POWER/PowerPC架构(Power G4、G5、G6、PowerXCell)

MIPS 的 MIPS架构(多家厂商,包括AMD也获授权生产,龙芯也是MIPS变种)

SUN 的 UltraSPARC架构(UltraSPARC III、IV、VI、T1、T2),以多线程见著

DEC 的 Alpha架构(现今少见,DEC被Compaq收购,Compaq又被HP收购)

Acorn的 ARM架构(类似于 MIPS 也授权多家公司制造,包括Intel),后来 Intel 还开发出 ARM的变种 XScale 架构 

Intel和HP 的 EPIC显示并行指令计算架构(Iantium、Iantium2),这也就是 IA64 架构,Intel Architecture 64(Intel64位架构),有时单独列为一类而不算RISC

Transmeta(全美达)的 VLIW(超长指令字)架构,和 IA64 在设计思想上有某种程度上的神似之处,有时也单独列为一类而不算RISC

1.3. 体系结构的度量

1.3.1. 度量指标:吞吐量和响应时间

1.3.2.  SPEC - Standard Performance Evaluation Corporation

1.3.3. CPU时间-处理器的性能指标公式

1.3.4. 计算机设计的量化原则

注意并行性,考虑局部性,关注经常性事件,因此可以通过把有限的资源投放到改进计算机重要部分,使性价比最好。度量的标准由Amdahl定律定义:

1.4. 流水线及其依赖

1.4.1. 内涵:在同一个时间周期内用不同的处理单元来完成不同指令的操作,提高并发性。

1.4.2. 一个简化RISC流水线例子

l 包含的指令:ALU,load&store, 转移和跳转

l 每条指令包含五个周期

IF:根据PC指示的地址从存储器取指令并装载入指令寄存器,同时PC+4(Bytes)

ID:对指令译码并访问寄存器以读寄存器的内容

EX:对操作数进行运算

MEM:如果是load,从EX得到的地址取数,如果是store,往EX得到的地址写数

WB:将结果写回寄存器

1.4.3. 流水线停顿

l 造成流水线停顿的原因

结构停顿(处理单元冲突,不能同时为两个指令服务)、数据停顿、转移停顿(跳转依赖前面指令得到的结果)

l 解决停顿的方法

乱序执行

数据停顿:旁路(forwarding)

转移停顿:@冻结或冲刷 @预测 @转移延迟(把一些不依赖的指令填到延迟槽)

1.5. 寄存器重命名

1.5.1. 为什么要有寄存器重命名

为了提高并行,CPU有乱序执行单元,假如程序某一段有7条指令,此时CPU将根据各单元电路的空闲状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路执行。乱序执行的导致出现了WAR、WAW、RAW问题,通过寄存器重命名可以解决WAW,WAR。

RAW是不能通过寄存器重命名来消除

1.5.2. 原理

硬件上给处理器提供多于ISA指定的寄存器,然后把ISA的寄存器映射到硬件的处理器上。

   

   

1.5.3.  存在的问题

1.6. Tomasulo’s Algorithm

1.6.1. Tomasulo算法就是寄存器重命名的一个实现算法,分三个步骤:发射、执行、写回。但没解决存在的问题

发射:

执行:

写回:

 淡淡的淡淡的ssssss

ROB

通过ReOrder buffer解决上面提到的提交问题

1.7. 动态调度

1.8. 分支预测

l 控制依赖和分支:程序中的跳转指令有20%左右if call_function,会导致流水线冒气泡,做无用功。

l 解决方案:

预测和推断

l 分支预测:

需要知道:分支是否会发生,如果发生那么跳转地址在哪

分支类型:

1)直接跳转(goto)和函数调用:肯定会发生分支跳转,地址也可直接知道

2)条件分支:方向难知道,地址易知道

3)间接跳转和函数返回:肯定跳转,地址难预测的【操作:PC←Z间接跳转到由寄存器区中的Z指针】【函数返回地址难预测,是因为函数是可以在不同的地方被调用的,别把返回地址和返回值给弄混了】

预测类型:

静态预测:预测总发生或总不发生

动态预测:基于历史信息,预测跟上次的结果一样

动态预测器的分类:

A)一位和多位预测器:预测状态码是否有多位

B)局部和全局预测器:局部只跟本条指令有关,全局与其他跳转指令有关

C)Tournament预测器:预测器的预测器,预测那个预测最准

 微处理架构:为了实现分支预测,包含了分支目标缓冲,返回地址栈

BTB:branch target buffer.

RAS:其实就是函数调用栈,返回地址在里面

1.9. 虚拟内存

1.9.1. 地址空间

每个进程都有自己的完整逻辑内存,叫进程的地址空间

1.9.2. 分页

物理内存被分页,每个进程使用的虚拟内存地址,用页面为两者建立映射关系。

1.9.3. TLB

为避免因为多次访问页表而导致性能的下降,将页表放到transfer lookaside buffer,在CPU上

1.9.4. Advanced Page Mode for Large Address Space:

1.9.4.1. Multi-level Page

1.9.4.2. Hashed Page

1.9.4.3. Inverted Page

1.9.5. Segmentation Architecture

1.9.6. Virtual Memory in i386

1.9.7. Page Fault

1.10. 缓存

1.10.1. memory技术

DRAM, 慢-内存

SRAM, 快-寄存器

Latency

• SRAM: <1 to 2ns (on chip)

• DRAM: ~50ns – 100x or more slower than SRAM

• Flash: 75,000ns (75 microseconds) – 1500x vs. DRAM

• Disk: 10,000,000ns (10ms) – 133x vs Flash (200,000x vs DRAM)

Bandwidth

• SRAM: 300GB/sec (e.g., 12-port 8-byte register file @ 3Ghz)

• DRAM: ~25GB/s

• Flash: 0.25GB/s (250MB/s), 100x less than DRAM

• Disk: 0.1 GB/s (100MB/s), 250x vs DRAM, sequential access only

1.10.2.  局部性

时间局部性:现在要的,一会过后也要

空间局部性:现在要的,附近的一会也可能要

1.10.3. Cache组织

1.10.3.1. 架构

1.10.3.2. 替代算法

Random (randomly selected line)

FIFO (line that has been in cache the longest)

LRU (least recently used line)

LRU Approximations

NMRU

LFU

1.10.3.3. 写策略

Write-through:Memory immediately updated on each write

Write-back:Memory updated when line replaced

1.10.4. Cache 性能

Average memory access time

AMAT = hit time + miss rate * miss penalty

1.10.5. 减少缺少惩罚

1.10.5.1. 多层cache

1.10.5.2. Critical Word First

Early restart

When needed word arrives, let processor use it, then continue block transfer to fill cache line

Critical Word First

Transfer loaded word first, then the rest of block(with wrap-around to get the entire block), Use with early restart to let processor go ASAP

1.10.5.3. Write Buffer

If multiple write misses to the same block, combine them in the write buffer

Use block-write instead of a many small writes

1.10.5.4. Victim Cache 

Recently kicked-out blocks kept in small cache, if we miss on those blocks, can get them fast

2. 指令级并行:

Vector Processing: Explicit coding of independent loops as operations on large vectors of numbers, multimedia instructions being added to many processors 

Superscalar: varying no. instructions/cycle (1 to 8), scheduled by compiler or by HW (Tomasulo) ----IBM PowerPC, Sun UltraSparc, DEC Alpha, Pentium 4

(Very) Long Instruction Words (V)LIW: 
fixed number of instructions (4-16) scheduled by the compiler; put ops into wide templates. Intel Architecture-64 (IA-64) 64-bit address(EPIC).

Parallel processing:Intel Core 2 Duo

2.1. 多发射

Issue packet: 从取指令单元拿到的指令组可能能在一个周期内发射多条,如果指令因为以前的在执行或正在发射的指令而引起结构冒险或数据冒险,那么指令将不能发射。 否则是可以发射的。

复杂度:

0 to N instruction issues per clock cycle, for N-issue

Performing issue checks in 1 cycle could increase clock cycle time: O(N^2) comparisons => issue stage usually split and pipelined

1st stage decides how many instructions from within this packet can issue, 2nd stage examines hazards among selected instructions and those already been issued

Higher branch penalties => prediction accuracy important

实现途径:乱序执行、寄存器重命名、Tomasulo、ROB.

2.2. 推测/推断

利用多个功能部件并行执行各个分支,然后根据判定结果选取某一分支的运行结果,因而可消除大部分的转移

2.3. 超长指令字

l 存在多个独立的功能单元,一条指令有多个独立子指令,每个子指令被分配到一个功能单元。

l 由编译器将各子指令打包成一个指令和安排如何调度硬件资源

l 整个VLIW组成一个单元

l 效果:

n 更紧凑、更快的硬件控制

n 更快的时钟

3. 多核处理器:

4. 线程级并行

4.1. 为什么要有线程级并行

指令间的数据冒险、结构冒险、跳转冒险的问题可以用乱序执行、预测、推断和VLIW等技术解决,但指令级并行发展到一定程度后,发射的指令数达到极限。可以通过线程引入更小的依赖,从而提高更好的并行。

4.2. 线程的粒度

粗粒度:在多个周期换线程

细粒度:在单个cycle换线程

SMT:在单个cycle能执行来自不同线程的指令

4.3. SMT需要的硬件

For an N-way (N threads) SMT, we need:

Ability to fetch from N threads

N sets of registers (including PCs)

N rename tables (RATs)

N virtual memory spaces

But we don’t need to replicate the entire OOO execution engine (schedulers, execution units, bypass networks, ROBs, etc.)

5. 缓存一致性协议

6. 存储系统:

6.1. 磁盘、磁带、RAID、SSD、Flash memory(u盘)

6.2. 磁盘的性能指标:

寻道时间,旋转时间(RPM,平均旋转)

6.3. IO总线

北桥:快,和内存相连

南桥:慢,和设备相连

6.4. RAID分类

6.4.1. RAID0 分片

6.4.2. RAID1 镜像

6.4.3. RAID01 先分片,再镜像; RAID10先镜像,再分片

6.4.4. RAID2 校验依赖盘上的ECC[error Correction code]

6.4.5. RAID3 校验盘是独立的,数据是按字节条带分布的

6.4.6. RAID4 校验盘是独立的,数据是按块条带分布的

One disk is a parity disk, keeps parity blocks

Parity block at position X is the parity for all blocks whose position is X on any of the data disks

A read accesses only the data disk where the data is

A write must update the data block and its parity block

Can recover from an error on any one disk

Use parity and other data disks to restore lost data

Note that with N disks we have N-1 data disks and only one parity disk, but can still recover when one disk fails

But write performance worse than with one disk
(all writes must read and then write the parity disk)

6.4.7. RAID5 校验位分布到不同盘里(每竖是一个磁盘)

6.4.8. RAID6 行-对角奇偶校验,除了有行校验盘,还有对角校验盘(即有两个校验盘)

 

7. 并行计算机

7.1. Flynn’s Taxonomy

SISD, SIMD, MISD, MIMD

7.2. 从内存来划分并行计算机

7.2.1. 集中式内存

Uniform memory access

SMP:Symmetric Multiprocessors所有处理器访问内存有一样的延迟,是共享的,有内存争用,带宽瓶颈等问题。一般在8个以内CPU的机器中采用 

7.2.2. 分布式内存

7.2.2.1. 分布式内存,但是共享的

NUMA,DSM distribution share memory.(内存还是共享的),所有处理器都是能访问所有的内存地址,但不同的CPU访问同一个地址的延迟是不同的。

7.2.2.2. 分布式内存,但是不共享的

Message Passing:处理器只能访问自己的内存,相互通信使用消息传递

两者原语:

同步、异步

Pros:Simpler and cheaper hardware,Explicit communication makes programmers aware of costly (communication) operations

Cons:Explicit communication is painful to program,Requires manual optimization

7.2.3. 共享内存的库有openMP,消息传递有MPI

8. cache一致性

8.1. Shared Caches

Trivially enforces coherence

Not scalable (L1 cache quickly becomes a bottleneck)

8.2. 基于监听cache一致性协议 

Needs a broadcast network (like a bus) to enforce coherence

Each cache that has a block tracks its sharing state on its own Directory

8.3. 基于目录cache一致性协议

Can enforce coherence even with a point-to-point network

A block has just one place where its full sharing state is kept

 

 

 原创笔记,转载请注明 http://blog.csdn.net/kangquan2008/article/details/9414533

 目前研二,想找实习! OFFER WANTED

作者:kangquan2008 发表于2013-7-22 21:54:38 原文链接
阅读:14 评论:0 查看评论

相关 [系统 结构] 推荐:

我应了解的系统结构

- - CSDN博客推荐文章
1.1. 处理器架构[http://blog.csdn.net/wyzxg/article/details/5027738]. x86、ARM、MIPS算是是目前最常见也相对最知名的处理器架构了. 指令集主要分为两类:CISC和SISC,有时又从SISC把VILW、EPIC分出来,各当一类. 1.指令系统庞大,指令功能复杂,指令格式、寻址方式多;.

android的文件系统结构简单介绍

- - CSDN博客推荐文章
1、android文件系统的结构. android源码编译后得到system.img,ramdisk.img,userdata.img映像文件. 其中,ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和userdata目录下.

【计算机组成与系统结构】计算机的发展与冯·诺依曼结构

- - 博客园_首页
上一篇文章写了第一台电子计算机的诞生过程,这片文章按着时间发展继续讲故事. 第一代计算机(20世纪40年代~50年代) - 电子管. 1944年8月,那时ENIAC还没完成,而此时莫齐利和埃克特便提出了下一台计算机EDVAC的建造计划. 和ENIAC一样,EDVAC也将用于美国军方的弹道计算. 到了1945年,后来被称为现代计算机之父的约翰·冯·诺依曼(John Von Neumann)作为技术顾问参与EDVAC的研究.

Bigtable:一个分布式的结构化数据存储系统[中文版]

- Bian Jiang - Alex &amp;&amp; OpenCould
Bigtable:一个分布式的结构化数据存储系统. Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据. Google的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance.

JBPM表结构

- - CSDN博客综合推荐文章
      JBPM全称——Java  Business PrcessManagerment(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开放的、灵活的、易扩展的可执行流程语言框架.        (1)它的业务逻辑定义没有采用目前的一些规范,而是采用了它自己定义的Jboss Jbpm Process Definition Language(jpdl).

Linux 文件结构

- Shiina Luce - OSMSG
想了解 Linux 文件系统树形结构,却又不愿翻阅 FHS 的朋友,可以参考 skill2die4 制作的这张简图. 此图算是 FHS 的图形化版本,简要的说明了 Linux 系统中各个目录的用途及层级关系,适合初学者使用参考. 不过其中较新的如 /run 目录并未在其中出现. 做为参考,这是 Fedora 16 Beta i686 上的文件结构:.

TCP报文结构

- - 互联网 - ITeye博客
一、TCP报文结构如下:.  固定首部长度为20字节,可变部分0~40字节,各字段解释:. source port number:源端口,16bits,范围0~65525. target port number:目的端口,16bits,范围同上. sequence number:数据序号,32bits,TCP 连接中传送的数据流中的每一个字节都编上一个序号.

壳系统

- Vernsu - It Talks-魏武挥的blog
经常有人被我问到“你用什么浏览器”时的答案是:傲游啦360啦,但事实上,这些都不是真正的浏览器,从技术角度讲,充其量只是在IE浏览器上加一个壳罢了. 在国外,壳浏览器是以“皮肤”的形式存在,纯属为了美化浏览器而用. 但在中国,壳浏览器成了一门生意. 奇虎的主要收入来源并非来自那个由于一场商战而赫赫有名的安全卫士,而是来自于360浏览器(它有两个版本,分别以IE和Chrome为内核).

秒杀系统

- - 开源软件 - ITeye博客
秒杀系统架构分析与实战. (反馈非常好的文章,推荐). (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货. (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;. 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:.