计算机体系结构

计算机设计(L3)

系统设计模型 Gajski Y-Chart
三个设计角度(行为、结构、物理/几何),
四个抽象层次(电路级、逻辑门级、处理器级 RTL、
系统级),
四个组件库(晶体管、逻辑单元和触发器、AUL 和寄存器文件、处理器和总线
在这里插入图片描述

计算机性能(L4)

Amdahl’s Law 阿姆达尔定律,通用 Amdahl 定律、CPU 时间的计算,其倒数用于衡量性能,
新旧性能之比=旧新时间之比=加速比,带权 CPI 的计算,程序中指令数的计算。

Amdahl定律

S = 1 1 − α + α n S=\frac{1}{1-\alpha+\frac{\alpha}{n}} S=1α+nα1n为改进部分的加速(S是总加速),n可能是并行处理器数、改进的指令速度、也可能间接给出,例如,改进使消耗时间从20min降低至2min,则n=20/2=10。

当α为1时,S=n;当α为0,S=1(原因很显然)。
Amdahl定律说明,改进某一部分所带来的加速比S,受限于a,即改进部分所占的比例。所以当资源不足时,更倾向于分配给占比更大的部分。

通用 Amdahl 定律:
S = 1 w 1 n 1 + w 2 n 2 + . . . + w k n k S=\frac{1}{\frac{w1}{n1}+\frac{w2}{n2}+...+\frac{wk}{nk}} S=n1w1+n2w2+...+nkwk1w1+w2+.//+wk=1,nk为每一部分的加速,当是性能下降时,应该改为nk*wk。(例如时间消耗从2min到20min,则nk=10,与wk是乘积关系而不是相除)

CPU时间

CPU 时间的计算,其倒数用于衡量性能,新旧性能之比=旧新时间之比=加速比
C P U    T i m e = C l o c k   c y c l e s ∗ C y c l e   T i m e = I n s t r u c t i o n   C o u n t ∗ C P I ∗ 1 C l o c k   R a t e CPU\;Time=Clock\,cycles*Cycle\,Time \\=Instruction\,Count * CPI*\frac{1}{Clock\,Rate} CPUTime=ClockcyclesCycleTime=InstructionCountCPIClockRate1

在这里插入图片描述

Cache(L7)

存储器的分级(寄存器、cache、内存、外存)、局部性原理(时间上:对同一地址的访问后,
接下来一段时间很有可能仍会访问;空间上:某一位置被访问,其周围位置往往也会被访问。)
Cache is transparent to user;transfers occur automatically
计算 cache 未命中情况下的 CPI(与 与 计组中求访问内存的平均时间不同)

缓存优化(L8)

映射关系 (主存中的块号如何映射到 cache 中的块号,块内地址不变)
直接映射:变换速度快,操作简单,但主存的块在 cache 中特定的位置可以放(主存块号取
余 cache 大小),会大量冲突(地址格式 tag+idx+odset.剩余的高 n 位为 tag,tag 和 idx 都
相等才 hit)
全相联映射:主存的块可以映射到 cache 上的任意位置(没有 idx)
组相联映射:cache 分组, 组间直接映射 ,组内全相联映射。即主存块对应 cache 中的组是
固定的,但对应在组中的块是任意的。
当未命中,则访问主存,如果 cache 未满,则将该块写入 cache,否则置换算法,踢出一个
块腾位置。置换策略:随机置换,FIFO 置换,最近最少使用 LRU
给一个地址,计算标签、块索引、偏移量

指令级并行ILP

分析指令并行,得先分析指令间的关系,决定着指令能否并行,以及如何开发ILP。
指令间的关系即数据依赖(译本翻译为相关,不太准),分为三类:

  • 真数据依赖
    导致RAW冒险
  • 名称依赖
    又分为反依赖(导致WAR冒险)、输出依赖(导致WAW冒险)
  • 控制依赖
循环展开
分支预测
动态调度

对指令重新排序,使指令可以乱序执行乱序完成,减少停顿,但名称相关会导致WAW和WAR冒险,并且使异常处理变得复杂(用到ORB)。

解决名称相关导致的问题,用到T算法。
Tomasulo算法:寄存器重命名功能由保留站提供,由Qj Qk跟踪操作数Vj Vk何时可用(:保留站在一个操作数可用时马上提取并缓冲它,这样就不再需要从寄存器中获取该操作数),以最小化乱序导致的WAR(反相关导致)、WAW(输出相关导致)冒险。
保留站类似草稿纸,在草稿纸上进行演算,确认正确后再誊写到正式作业本。

数据级并行DLP

三种SIMD:Vector、SIMD指令集扩展、GPU

Vector

convoy、chainning、chime
启动时间是chime模型忽略的开销源

SIMD扩展
GPU

区别循环内依赖和循环间依赖。
循环体内,后期迭代访问的数据用到前期迭代产生的数据,即循环间依赖。
循环间依赖会导致无法使用GPU加速。循环间依赖分为环式循环依赖和非环式循环依赖。

  • 循环内依赖
    A[i+1] = A[i] + 1;
  • 环式循环依赖
    A[i+1] = A[i] + 1;
    无法并行
  • 非环式循环依赖
    A[i] = B[i] +1;
    B[i+1] = C[i] + 1;
    可以修改代码,将其转换为循环内依赖,进而并行处理。

GCDtest
产生时用到A[ai+b],访问时用到A[ci+d]
(d-b) mod gcd(c,a) == 0,则存在循环间依赖。

线程级并行Thread Level Parallelism TLP

线程级并行TLP有多个程序计数器,使用MIMD模型开发。
多个处理器紧密耦合、共享内存。n个处理器需要n个线程。
线程可以用于数据级并行,但开销可能超过收益。

多处理器分为

  • symmetric (shared memory) multiprocessors对称多处理器SMP
    具有少量的核心数、所有处理器共享单一memory,具有统一的内存延迟(访问),UMA。
  • distribeted shared memory DSM

(共享块)共享数据由多个处理器使用,就会存在不一致性,所以需要方法来保证缓存一致性。缓存一致性包括两方面:

  • 一致性coherence
    处理器读取的都是最新的写入值
  • 连贯性consistency
    写入值何时能被读取

一致性缓存提供了迁移和复制功能

缓存一致性协议两种方法

  1. 监听式(Snooping)缓存一致性协议
    MSI,修改、共享、无效
    每个处理器通过共享存储器访问总线,监听或跟踪每一个块的共享状态。
    写入失效协议:当一个处理器独占写入时,(处理器通过总线广播其失效),其他处理器再读取时,会发生缺失,被迫提取新副本。
    写更新协议:处理器写入时,更新该数据项的所有缓存副本。
  2. 目录式(Directory based)缓存一致性协议
    每个存储块的共享状态保存在一个位置上(集中式目录)

真共享缺失:读非法块中的修改过的字
假共享缺失:读非法块中未修改的字
命中:读和法块中的字
只要存在写操作,该块就失效非法。


考试题目:

  1. 填空
    Amdahl定律公式、RTL全称、任意5个缓存优化方法、
  2. 判断(无需理由)
    就原书上的谬论与易错点
  3. 简答
  • 计算机当前发展的瓶颈,列举三个及解决方法
    (存储器发展跟不上CPU的发展、Amdahl定律、计算机架构、摩尔定律失效)
  • Gajski Y-Chart
  • 全相联、组相联、直接映射,给一个序列判断每一步是miss还是hit
  • 教材5.1节的例题原题(100个处理器获得80加速比,则求并行部分比例)
  • 教材5.1节的例题原题(求涉及远程通信情况下的CPI)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值