计算机体系架构学习笔记

RISC:精简指令集,低功耗低性能,以ARM为代表。
CISC:复杂指令集,高功耗高性能,以INtel为代表。

一段C代码如何变成可执行的代码
hello.c >> 预处理器 >> hello.i >> 编译器 >> hello.s >> 汇编器 >> hello.o + printf.o >> hello 过程如下图
在这里插入图片描述
计算机系统层级:
用户模式(User Mode): 在用户模式下,代码没有对硬件的直接控制权限,也不能直接访问地址的内存。程序是通过调用系统接口(System APIs)来达到访问硬件和内存。在这种保护模式下,即时程序发生崩溃也是可以恢复的。在你的电脑上大部分程序(Application programs)都是在用户模式下运行的。
内核模式(Kernel Mode): 在内核模式下,代码具有对硬件(虚拟内存,操作系统,进程,内存,io device,处理器。)的所有控制权限。可以执行所有CPU指令,可以访问任意地址的内存。内核模式是为操作系统最底层,最可信的函数服务的。在内核模式下的任何异常都是灾难性的,将会导致整台机器停机。
在这里插入图片描述
堆栈
在这里插入图片描述

堆栈的基本概念:
1.堆栈是一段连续的存储空间
2.后入先出的工作方式
3.只能从栈顶取出数据
4.能保持数据的执行顺序

用处:保存函数调用的返回地址,应对函数跳转指令(比如JMP指令)

堆栈指针寄存器Rsp: 用于保存一个地址,地址指向堆栈使用的内存地址,也就是栈顶。

关于堆栈只有两条指令:PUSH和POP;
PUSH:把内容加入到堆栈顶端,⼊栈时递减堆栈指针
POP:将堆栈顶端的内容弹出;弹出后,⾃增堆栈指针
汇编用法:

push ax:将寄存器ax中的数据送入栈中; 
pop ax :从栈顶取出数据送入ax。

堆栈在函数中的使用:
函数顺次被调用 >> 堆栈顺次保存函数返回地址(下一条指令的地址) >> 执行函数 >> 堆栈逆序弹出返回地址,用作下一条指令的地址。

汇编转C
source:源操作数; dest:目的操作数.操作数有三种类型
立即数(Imm)——用数字文本表达式
寄存器操作数(Reg)——使用 CPU 内已命名的寄存器
内存操作数(Mem)——引用内存位置(指针存储)
reg:寄存器
mem:存储器
下图中:有括号代表地址,用指针变量表示(目的操作数是Mem类型),无括号代表变量,用寄存器变量表示。
在这里插入图片描述
计算地址实例:%rdx: 0xf000; %rcx: 0x0100;
在这里插入图片描述
xPSR是状态寄存器:记录 ALU 标志(0 标志ZF,进位标志CF,负数标志SF,溢出标志OF),执行状态,以及当前正服务的中断号,以下是 ALU 标志的理解实例;
在这里插入图片描述
D锁存器:
在这里插入图片描述
时序分析:
1)Clock = 1 Q+ 等于 D (透明)
2)Clock = 0 Q+ 等于Clock 变为低电平时的D
下图为有延迟情况
在这里插入图片描述
累加器电路:
在这里插入图片描述
时序分析:
1)上升沿输出;
2)上升沿期间Load是高电平就装载In的内容,是低电平就累加;
(tips: Load为高电平,重新装载,前面的内容清空,输出的累加是重新装载的)
在这里插入图片描述
C语言if…else转汇编
指令cmpq: 比较大小,即两个数做减法,仅修改标志位
指令jle :前<=后就跳转 Jump if less or equal
在这里插入图片描述
C语言CASE语句转汇编
ja: ⼤于则跳转
在这里插入图片描述
计算机执行代码过程:
1.取指:读9个字节,PC+9;
2 译码:读栈指针
3 执行:栈指针减去8;
4 访存:把增加的PC写入新的栈;指针指向新的值;
5 回写:更新栈指针

数据冒险:source和destination相同时可触发
当前指令需要前一条指令的计算结果,往往会造成阻塞。
解决冒险的方法
1.调整顺序
2.推迟执行
3.前推策略

控制冒险
控制冒险即跳转指令的冒险。跳转时,需要根据前面某条指令的结果确定分支的选择。
解决方法:停顿

计算机体系架构
超标量流水线
每个时钟周期可并发多条独立指令,即以并行操作方式将两条或多条指令编译并执行,为此需要配备多个功能部件。

乱序执行
下一条指令的执行不依赖前面那条延时较长的指令,只要有了操作数就能执行,此时可以打乱机器指令顺序,就算指令在后面,只要能执行,就先执行。

虚拟内存
MMU( Memory manage unit) 设置在总线上的内存管理单元, 是用于虚拟内存映射到物理内存的硬件。
①Processor( 处理器) 生成虚拟地址;
②MMU 生成 PTEA(页表条目地址)从内存的页表中请求内容;
③ 内存中的页表返回相应的 PTE 值;
④ PTE 的有效位是 0, MMU 触发异常, 转到异常处理程序;
⑤ 异常处理程序确定内存中的牺牲页, 并将其写会到磁盘上;
⑥缺页处理程序页面调入新的页面, 更新 PTE。
⑦ 由于 PTE 已经被更新好了, 重新发送虚拟地址到 MMU( 后面就和命中的过程一样了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值