随笔分类 - 计原
摘要:异常 就像我们通常通过判断和循环,根据程序中某些状态来让程序做出不同的反应一样,操作系统也需要一种机制对某些由操作系统掌管的状态做出不同的反应,比如用于支持多道程序设计的进程切换;网络包到达网络适配器;磁盘数据已经就绪等,此时,操作系统需要暂停当前正在执行的进程,去做一些其它工作,同时做完之后还可能
阅读全文
摘要:分层概述 不同层次的存储器的常见访问时钟周期 存储器 时钟周期 CPU寄存器 0 高速缓存 4~75 主存 上百 磁盘 几千万 除非设计非常失败,计算机程序大多数都会在一段时间内持续的访问某个局部的数据,这称为局部性原理。所以存储空间更小,性能更高的存储器通常作为存储空间稍大,性能稍低的存储器的缓存
阅读全文
摘要:编译器优化局限性 现代编译器都会在编译时对你的代码进行一些分析和优化,比如简化计算表达式,内联函数等等,并且编译器会对你提供优化等级的控制。在GCC中使用-Og、-O1、-O2、-O3会让编译器使用越来越多的优化。书上说编译器不会对代码进行激进的优化,编译器对代码做的所有优化都必须产生和未优化前一样
阅读全文
摘要:流水线通用原理 在之前的SEQ模型中,由于一条指令的所有部分必须在一个时钟周期内完成,所以时钟周期无比的慢,所以系统的吞吐量就很慢,吞吐量即每秒能够处理的指令数量。 流水线系统的思路和工厂流水线一样,比如一个服装工厂流水线需要通过裁剪、缝合、贴商标、装袋这四个步骤,想象一下是当一件衣服的这四个步骤全
阅读全文
摘要:指令集在CPU和程序员(编译器)之间提供了一个抽象层,看起来,CPU在一条接着一条的顺序执行编译后的指令,但出于性能考虑实际情况却远比这个“看起来”要复杂。现代CPU使用一种称作“流水线”的技术来执行每一条指令。 本章基于一种具有简单指令集“Y86-64”的CPU架构进行研究,旨在对处理器的整个体系
阅读全文
摘要:本篇主要介绍机器层面对实现过程调用的支持。 过程 过程即编程语言中的函数、方法、子例程、处理器等。 当P调用Q时: 传递控制:在进入过程Q时,程序计数器必须设置成Q的起始地址,当从Q退出时,程序计数器必须设置成P中执行Q的下一条指令的地址 传递数据:P必须能够向Q提供一个或多个参数,Q必须能够向P提
阅读全文
摘要:控制 CPU当然要提供一些指令和机制来允许开发者在其上构建出具有非完全顺序流程的程序了。 条件码 CPU维护者一组只有单个位的条件码寄存器,它们用来记录最近的算数或逻辑操作所产生的“副作用”。 CF:进位标志。最近的操作使最高位产生了进位,可以用来检查无符号操作的溢出。 ZF:零标志。最近的操作得到
阅读全文
摘要:x86-64中的一些处理器状态 程序计数器:下一条将要执行的指令在内存中的地址 整数寄存器文件:有16个命名的位置,每个都能存储64位的值,可以存储地址或整数数据,它们根据命名的不同,经常被用于处理不同的数据。 条件码寄存器:保存最近执行的算数或逻辑指令的状态信息,可以用来实现条件或分支控制结构。
阅读全文
