Computer Systems(A Programmer's Perspective)

本文详细介绍了计算机系统的基础概念,包括硬件的构成、存储层次结构、进程、虚拟内存、异常控制流等核心概念。讨论了处理器体系结构,如Y86-64指令集,强调了指令级并行和存储优化的重要性。同时,概述了链接、异常处理、虚拟内存的工作原理,以及优化程序性能的策略,为理解计算机系统提供了全面的视角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考《深入理解计算机系统》机械工程出版社

Chapter 1 计算机系统漫游

1.1 引入案例hello.c

代码

#include <stdio.h>
int main()
{
	printf ("hello world\n");
	return 0;
}

编译过程
编译过程
运行hello程序 P7

1.2 重要概念

1.2.1 系统的主要硬件

  • 总线
  • I/O设备
  • 主存
  • 处理器

1.2.2 存储设备的层次结构

存储设备的层次结构

1.2.3 进程、虚拟内存和文件

1.2.4 系统间网络通信

1.2.5 并发和并行

  并行是指两个或者多个事件在同一时刻发生;
  并发是指两个或多个事件在同一时间间隔内发生。
  在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
  倘若在计算机系统中有多个处理器,则这些可以并发执行的程序便可被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

  并行可以在计算机系统的多个抽象层次上运用
由高到低的三个层次

  • 线程级并发:一个进程执行多个控制流(多个CPU)
  • 指令级并行:CPU同时执行多条指令
  • 单指令、多数据并行:允许一个指令产生多个可以并行执行的操作

1.2.6 计算机系统中的抽象

计算机系统中的抽象

Chapter 2 信息的表示和处理

Chapter 3 程序的机器级表示

ATT 与 Intel 汇编代码格式的不同

  • Intel 代码省略了指示大小的后缀,我们看到指令 push 和 mov,而不是 pushq 和 movq
  • Intel 代码省略了寄存器名字前面的 ’%‘ 符号,用的是 rbx,而不是 %rbx
  • Intel 代码用不同的方式来描述内存中的位置,例如是 ’QWORD PTR [rbx]‘ ,而不是 ’(%rbx)‘。
  • 在带有多个操作数的指令情况下,列出操作数的顺序相反。当在两种格式之间进行转换的时候,这一点非常令人困惑。

Chapter 4 处理器体系结构

4.1 基本概念

  本章主要介绍一个处理器的硬件和指令,以及处理器的工作原理
  本章定义了一个ISA为“Y86-64”指令集,数据类型、指令、寻址方式都比x86少些,设计它的CPU译码逻辑也比较简单,但足够完整。
指令集体系结构ISA
  一个处理器支持的指令和指令的字节级编码
  ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;而处理器的设计者必须建造出支持这些指令的处理器。

4.2 Y86-64指令集体系结构

定义一个ISA,包括定义

  • 各种状态单元
  • 指令集
  • 指令集编码
  • 一组编程规范和异常事件处理

程序员可见的状态:可修改的处理器的某些部分

  • 15个程序寄存器:%rax %rbx %rcx %rdx %rsp %rbp %rsi %rdi %r8 %r14
  • 3个一位条件吗:ZF、SF、OF
  • 程序计数器PC
  • DMEM内存
  • 状态码Stat:表明程序执行的总体状态,会指示是正常运行,还是出现了某种异常

指令

  • 4个movq指令:irmovq、rrmovq、mrmovq、rmmovq。显式地指明源和目的操作数。第一个字母表明源类型,可以是立即数(i)、寄存器(r)和内存(m),第二个字母表示目的类型,可以是寄存器(r)或内存(m)
    内存传送指令中的内存引用方式是简单的基址+偏移量形式
    不允许内存间直接传数据,也不允许将立即数传送到内存
  • 4个整数操作指令:addq、subq、andq、xorq。只能对寄存器数据进行操作,x86可对内存操作,这些指令会设置3个条件码ZF、SF、OF
  • 7个跳转指令:jmp、jle、jl、je、jne、jge、jg。
  • 6个条件传送指令:cmovle、cmovl、cmove、cmovne、cmovge、cmovg。
  • call指令:将返回地址入栈,然后跳到目的地址。
    ret指令:从调用中返回
  • pushq和popq:入栈和出栈
  • halt:停止指令的执行,并将状态码设置为HLT

指令编码
见书P246

异常
状态码Stat

名字 含义
1 AOK 正常操作
2 HLT 遇到器执行halt指令
3 ADR 遇到非法地址
4 INS 遇到非法指令

4.3 逻辑设计和硬件控制语言HCL

在当前技术中,逻辑1是用1.0伏特左右的高电压表示的,逻辑0是用0.0伏特左右的低电压表示的。

要实现一个数字系统需要三个主要的组成部分

  • 计算对位进行操作的函数的组合逻辑
  • 存储位的存储器单元
  • 控制存储器单元更新的时钟信号

现代逻辑设计

  • HDL:一种文本表示,用来描述硬件结构而非程序行为的
  • Verilog:语法类似C
  • VHDL:语法类似Ada

组合逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值