天天看点

计算机系统-0 Hello world的一生和CPU架构

作者:两块肥肉2022

CPU总体架构

总线按照用途分为系统总线、存储器总线、IO总线。

计算机系统-0 Hello world的一生和CPU架构

也可以这样分类看:

计算机系统-0 Hello world的一生和CPU架构

ITCM对于单核使用,类似CPU Cache,可以提醒性能。

Hello world的一生

1:输入源码

计算机系统-0 Hello world的一生和CPU架构

2: 保存到磁盘的hello.c

磁盘都是按照字节存储的,不同上下文中,可以按照不同含义解析。

文本文件每个字节按照ascii码,同时包含\n\t<space>等(10进制)

计算机系统-0 Hello world的一生和CPU架构

Linux使用命令:

#十进制打印

od -Ax -tcu1 helloworld.c

计算机系统-0 Hello world的一生和CPU架构

#如果采用16进制,逐个字节打印ASCII字符

od -Ax -tcx1 helloworld.c

3:编译

计算机系统-0 Hello world的一生和CPU架构

gcc -o helloworld helloworld.c

后面再补充细节,这里重点说明CPU架构

4:运行

计算机系统-0 Hello world的一生和CPU架构

结合CPU架构图,执行如下:

1:shell是外壳程序,当键盘输入helloworld,通过USB接口通过IO总线和系统总线,读入到CPU的寄存器;CPU通过系统总线和存储器总线写入到主存。

计算机系统-0 Hello world的一生和CPU架构

2:当键盘输入回车时,外壳程序直到输入结束,通过一系列指令加载helloworld文件,把目标文件代码和数据从磁盘复制到主存。

计算机系统-0 Hello world的一生和CPU架构

3:处理器执行代码指令,把主存的Hello world加载到寄存器,再复制到显示设备,显示再屏幕上。

计算机系统-0 Hello world的一生和CPU架构

缓存

从helloworld运行看,CPU执行很快,但是IO设备和内存速度很慢,需要缓存。

计算机系统-0 Hello world的一生和CPU架构

执行时间如下:

1cycle=0.3纳秒

L1 Data cache=1纳秒

L2 Data cache=4纳秒

RAM= 80+纳秒

读写硬盘15+毫秒

互联网访问 80毫秒

抽象

helloworld程序没有直接访问键盘、寄存器、磁盘和主存,依靠是操作系统提供的服务。

计算机系统-0 Hello world的一生和CPU架构

操作系统可以看成应用软件和硬件之间的一层软件,屏蔽处理器、主存、IO设备差异。

操作系统提供进程、虚拟内存VM和文件,对应如下功能。

计算机系统-0 Hello world的一生和CPU架构

进程

进程是操作系统对正在运行程序的一种抽象。一个系统可以运行多个进程,好像可以独立使用硬件(实质并发,即交错执行)。多个进程是切换,上下文(寄存器、PC指针、缓存)切换。

计算机系统-0 Hello world的一生和CPU架构

Shell壳到helloworld程序切换,执行完后切回shell,采用上述流程。

虚拟内存

操作系统对于每个进程提供一个抽象,独占使用内存,包含代码段、数据段、共享库、堆、栈、内核态等

计算机系统-0 Hello world的一生和CPU架构

文件

文件是对于I/O设备的抽象,是一个字节序列。

跨系统的网络通讯

计算机系统-0 Hello world的一生和CPU架构

并发和并行

单处理器下多线程并发

超线程下不依赖数据的并行(PC和寄存器有多份,但是ALU只有1份)

多处理器下多线程的并行(每个处理器独立PC、寄存器和ALU)

流水线保证指令级并行

单指令多数据并行SIMD

继续阅读