Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

ICS Review

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

ICS期末章节总复习

(2-7章,连详)
章节概况
我们对计算机的探索是从学习计算机本身开始的。在2-6章,
我们主要学习程序结构和执行,我们需要方法表示基本数据类型,
然后我们考虑机器级指令如何处理这样的数据,以及编译器如何将
C程序翻译成这样的指令。接下来,我们研究几种实现处理器的方
法,帮助我们更好了解硬件资源如何被用来执行指令。一旦理解了
编译器和机器级代码,我们就能知道如何通过编写C程序以及编译
它们来最大化程序的性能。本部分以存储器子系统的设计作为结束,
这是现代计算机系统最为复杂的部分之一。
第7章我们继续对计算机的探索,学习在系统上运行程序,进
一步讨论一个构建和运行应用程序的系统软件。第七章我们学习链
接器,它把程序的各个部分联合成一个文件,处理器将这个文件加
载到内存,并且执行它。
这一部分的学习,能够帮助我们深入了解如何表示和执行应用
程序。我们在这半个学期的学习中学到了如何写出安全、可靠且充
分利用计算机资源的程序。
知识结构

• 信息的机器级表示 • 四个重要部件
• 数据的机器级表示
• 程序的机器级表示
• 编译器
• 处理器
• 计算机子系统简介
• 处理器系统 • 存储器
• 存储器系统 • 链接器
• 实操:优化算法
• 链接
Ch2.信息的表示与处理
• Class 1 位、字节和整数
• 整数表示
• 整数运算
• Class 2 浮点数
• IEEE浮点表示
• 浮点运算

• 主要学习目标——在位级上理解整数和浮点数的编码,并理解算
术运算的数学特性
Bits Bytes and Integers
• 整数表示
• 计算机用二进制储存信息,基本单元是bit,代表一位0或1,我们通常用
16进制来表示位模式
• 在计算机中,每个C数据类型有着自己固定的大小,它们的基本单位都是
byte,1byte=8bits
• 整数(int)在机器表示中占有四个byte,分为有符号整数和无符号整数,
前者最高位为符号位,表示的最大整数(Tmax)为2147483647,最小整
数(Tmin)为-2147483647-1;
• 有符号数和无符号数之间可以相互转换(显式、隐式)
• 数字的位表示可以拓展或截断。零拓展/符号拓展,补码的截断
• 整数的运算
• 加、减(转化为补码加法)、乘、除
• 位运算
• 与传统运算相比有何不同?溢出问题->运算律是否适用?
Floats !"#
• $%&'()*+,,,-,.
• IEEE浮点数表示法 • 浮点数的计算
+∞ :0 1111 1111 000 0000 0000 0000 0000 0000
-∞ :1 1111 1111 000 0000 0000 0000 0000 0000
! "
(−#) %& ①0'1-.23456789:;<=>?
• /)/&'()*0,,,-,.
NaN :x 1111 1111 xxx xxxx xxxx xxxx xxxx xxxx

!"#$%&'&(
)*+,$%&-./

!"#$%&'()*+,-./01

23456 3456 789


Ch2 考点
• 大小端表示法
• 常用小端法,低地址写低字节,高地址写高字节
• 常与其他知识点融合出现,如union、寻址(第九章)等
• 2016.四(2)
• 整数的运算和比较
• 无符号数和有符号数比较,有符号数转化为无符号数
• 注意运算符的优先级
• 不同类型数字转换导致的溢出和舍入问题
• 2015. 2 && 2017. 1
• IEEE浮点数表示
• 学会举一反三
• 2015.1 && 2016.2 && 2017.2
Ch 3 程序的机器级表示
• Class 3 机器级编程—基础 • Class 6:机器级编程—数据
• 汇编代码和机器代码 • 数组array
• 寄存器、操作数、数据传送指令 • 结构体struct
• 算术运算和逻辑运算 • 指针pointer
• Class 4 机器级编程—控制
• 条件码寄存器
• Class 7:机器级编程—高级主题
• if&&else • 联合union
• do&&while、while、for • 内存越界和缓冲区溢出
• switch
• Class 5 机器级编程—过程 主要学习目标——了解C语言提供的
• 运行时栈 抽象下面的东西。通过让编译器产生
• 转移控制 机器级程序的汇编代码表示,了解编
• 数据传送 译器以及它的优化能力,以及机器、
• 记忆管理 数据类型和指令集。
Machine-Level Programming I: Basics
• 机器代码、 汇编代码和指令集架构(ISA)
• 机器代码:处理器执行的字节级的程序
• 汇编代码:机器代码的文本表示,人类可读的表示
• 指令集架构(ISA):定义机器级程序的格式和行为,定义了处理器状态、
指令的格式,以及每条指令对状态的影响
• 寄存器、操作数、数据传送指令
• 寄存器(16个)--特殊作用的寄存器
• 寻址(立即数寻址、绝对寻址、寄存器寻址、基址+偏移量、<比例>变
址寻址)P121
• 数据传送指令(记忆特殊指令如movabsq、cltq、cqto)
• 算术运算和逻辑运算
• lea指令
• 一元(如imul)和二元(如add)运算
• 移位操作(区分sar和shr)
Machine-Level Programming II: Control
• 条件码寄存器CZSO
• CF(进位,unsigned)ZF(零)SF(符号)OF(溢出,signed)以及它们
的算术指令设置
• CMP && TEST 指令(仅设置条件码)
• 基于条件码实现条件判断(SET, JMP, CMOV)
• If else判断语句
• 条件控制(使用控制,基于jmp)
• 条件传送(使用数据,基于cmov)
• while && for 循环
• 利用跳转和条件判断实现
• switch语句
• 跳转表
Machine-Level Programming III: Procedures
• 运行时栈
• pushq和popq
• call和return
• 转移控制
• Call func()
• Return
• 数据传送
• Call func(arguments)
• Return value
• 记忆管理
• 调用者和被调用者有责任维护自己保存的数据
不变
Machine-Level Programming IV: Data
Machine-Level Programming V: Advanced Topics
• 异质的数据结构
• 将不同对象组合贷一起创建数据类型的机制:结构(struct)与联合(union)
• 数据对齐
• 数组分配和访问
• 基本原则(声明、地址表示)
• 指针运算 :注意计算同一个数据结构中两个指针之差,结果要除以该数据类型
的大小
• 嵌套数组(和第五章的优化结合)、定长数组、变长数组
• 指针
• 函数指针:从里往外读 int (*f)(int*)
• 内存越界和缓冲区溢出
• attacklab
• 实用工具:GCC C语言编译器、GDB调试器
Ch3 考点
• 寻址方式
• 2016. 3
• 汇编指令(与C代码结合)
• 对mov、push、call、lea、cmov等指令掌握熟练
• 对循环、判断、函数调用等掌握熟练
• 基本会考一道大题(不算难),用期中的做题方法即可
• 2015.3(汇编代码与c代码之间的转换,考察lea和cmov)
• 2016.1 (汇编指令理解)
• 2019.2(汇编指令和数据对齐结合)
• 2015.二(汇编代码填空)
• 2016.二(汇编代码和c代码填空)
• 2017.二(汇编代码转化为c代码填空)
• 数据对齐
• 一般为struct和union
• 对齐原则:任何K字节的基本对象地址必须是K的倍数
• 2015.4、 2019.2
• 其他基本概念
• 重新好好读一下书,回顾期中前画的重点句子
• 2017.3(缓冲区溢出)
Ch 4 处理器体系结构
• Class 8 处理器架构:ISA和逻辑设计
• Y86-64指令集体系结构
• 逻辑设计和硬件控制语言HCL
• Class 9 处理器架构:顺序实现
• 将处理组织成阶段
• SEQ硬件结构
• SEQ的时序
• SEQ阶段的实现
• Class 10处理器架构:流水线
• 流水线原理基础
• Y86-64的流水线实现

• 主要学习目标:了解SEQ和PIPE处理器体系结构和工作原理
Processor Architecture I: ISA & Logic Design
• Y86-64指令集体系结构 Application
• 区分于x86-64 Program
• 程序员可见状态:寄存器、条件码、Stat、内存、PC
Compiler OS
• 指令与异常(AOK/HLT/ADR/INS):
• CISC与RISC ISA
• 逻辑设计和硬件控制语言HCL
And Or Not
CPU
C Design
• 逻辑门 a B a MIN3 Min3
out a out
out b
• 组合电路和HCL表达式 b A
out = a && b out = a || b out = !a
Circuit
int Min3 = [ Design
• 存储器和时钟 A < B && A < C : A;
State = x State = y Chip
B < A && B < C : B;
Rising 1 : C; Layout
Input = y Output = x Output =y
x _ clock];
_ y
Processor Architecture II: Sequential
• 将处理组织成阶段 SEQ硬件结构

• F取指、D译码、E执行、M访存、W写回、更新PC
• 写一条指令的SEQ处理情况

• SEQ的硬件实现
Processor Architecture III: Pipelined
• 流水线原理基础
• 目标和方法
• 局限性:1.不一致的划分, 2.流水线过深,收益反而下降, 3.带反馈的流水线
系统
• Y86-64的流水线实现
• SEQàSEQ+——电路重定时
• SEQ+àPIPELINE-
• (1)相应阶段前插入流水线寄存器F、D、E、M、W(流水线化)
• (2)信号的重新排列和标号 非流水线化计算硬件
• (3)预测下一个PC 100 ps 20 ps 100 ps 20 ps 100 ps 20 ps
• PIPELINE-àPIPELINE
• 用暂停来避免数据冒险 Comb. R Comb. R Comb. R
• 用转发来避免数据冒险 Delay = 360 ps
logic e logic e logic e
Throughput = 8.33GIPS
• 特殊考虑的冒险类型 A g B g C g
• 加载/使用数据冒险
• 避免控制冒险(RET)
• 预测错误的分支 Clock
三阶段流水线
• 异常处理
Ch 4 考点 吞吐量:单位时间内完成的指令数
(单位:GIPS,每秒十亿条指令)
延迟:完成一条指令需要的时间
• 流水线处理器 (单位:ps,皮秒)
• 基本必考!
• 主要考流水线的实现原理和方法、吞吐量的计算
• 流水线的实现:将组合逻辑分成阶段,使得阶段最大经历的时间最小
(周期最小)
• 吞吐量(GIPS)=1000/最大周期(ps)(看清单位)
• 2017.4(流水线处理器)
• 2015.三(流水线处理器)
• 2016.三(流水线处理器)
• 2017.三(流水线处理器)
• 2019.二(流水线处理器)
Ch 6 存储器层次结构
• Class 11 层次存储
• 存储技术
• 局部性
• 存储器层次结构

• Class 12 高速缓存
• 高速缓存存储器的组织结构
• 高速缓存对程序性能的影响

• 学习目标:了解计算机的存储技术、速度与成本之间的关系
编写具有良好局部性的程序来显著改进程序运行时间
memory-hierarchy
• 存储技术
• 随机访问寄存器
• SRAM & DRAM
• 内存模块
• 非易失性存储器ROM
• 访问主存(I/O桥)
• 磁盘存储
• 磁盘构造:盘片->表面*2->磁道(柱面)->扇区->字节
• 磁盘容量:记录密度、磁道密度、面密度
• 磁盘操作:计算磁盘访问时间
• 连接I/O设备和访问磁盘
• 固态硬盘——基于闪存,读比写快
• 局部性
• 时间局部性
• 空间局部性
• 存储器层次结构
存储器层次结构 L0:
Regs CPU registers hold words
Smaller, retrieved from the L1 cache.
faster, L1: L1 cache
and (SRAM) L1 cache holds cache lines
costlier retrieved from the L2 cache.
L2: L2 cache
(per byte)
(SRAM)
storage L2 cache holds cache lines
devices retrieved from L3 cache
L3: L3 cache
(SRAM)
L3 cache holds cache lines
retrieved from main memory.
Larger,
slower, L4: Main memory
and (DRAM) Main memory holds
cheaper disk blocks retrieved
(per byte) from local disks.
storage L5: Local secondary storage
devices (local disks)
Local disks hold files
retrieved from disks
on remote servers
L6: Remote secondary storage
(e.g., Web servers)
Cache Memories E = 2e lines per set

• 高速缓存存储器的组织结构 Address of word:


t bits s bits b bits
• 直接映射高速缓存
• 组相联高速缓存(TLB:四路)S = 2s sets
tag set block
index offset
• 全相联高速缓存(DRAM)
• 有关写的问题(直写、写回)
• 参数和策略不同对缓存的影响
data begins at this offset
• 高速缓存对程序性能的影响 v tag 0 1 2 B-1
• 存储器山
valid bit
• 重新排序循环以提高空间局部性 B = 2b bytes per cache block (the data)
(cachelab)
• Locate set
• Check if any line in set
has matching tag
• Yes + line valid: hit
• Locate data starting
at offset
Ch 6 考点
• Cache的设计原理
• 主要是书上知识点的记忆,要好好看书(cache那块)
• 2015.6
• 2017.6
• 局部性
• 多次引用的变量体现时间局部性
• 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
• 循环有好的时间局部性和空间局部性
• 第9章的页命中也利用了局部性
• 2015.7
• 2019.1
• miss判断(期中的重点)
• 与第九章结合考察!
• 2017.6
Ch 5 优化程序性能(Class 13)
• 编译器进行的优化
• 无法自动优化的情况
• 浮点数不满足结合律
• 无法判断地址重复引用
• 无法判断循环体中函数是否有副作用
• 程序性能表示:CPE
• 程序员优化
• 减少循环中的函数重复引用、减少不必要的过程调用(如边界检查)、减少内
存引用
• 关键路径及并行优化(archlab)
• 优化的限制
• 寄存器溢出
• 分支预测错误处罚
• 内存性能限制
• 学习目标:程序员和编译器合作使得程序性能最大化。

You might also like