Shallow Dream

Keep It Simple and Stupid!

0%

0x01 计算机系统概述

自学笔记

计算机的发展历程

计算机系统构成

  • 用户
  • 应用程序
  • 操作系统OS
  • 硬件(裸机)

系统软件安装在硬件上

应用程序安装在系统上

只有硬件的就是裸机

应用程序和操作系统统称软件,

系统软件:

  • 操作系统
  • 语言处理程序:C语言等之类代码的编译,高级语言转为低级语言
  • 数据库管理系统
  • 分布式软件系统:多设备使用,同时连接多个键盘进行控制
  • 网络软件系统
  • 各种服务软件:属于操作系统的一部分

硬件软件的发展

硬件发展:

电子管时代:1946-1959

晶体管时代:1959-1964

中小规模集成电路时代:1964-1975

超大规模集成电路时代:1975-1990

超级规模集成电路时代:1990-现在

随着半导体材料和工艺的发展不断发展

软件发展:

汇编语言阶段:20世纪50年代

汇编语言不是机器语言——二进制,计算机唯一能够识别的,人类不好分辨,对他进行封装,形成汇编语言

程序批处理阶段:20世纪60年代

操作系统的雏形

分时多用户阶段:20世纪70年代

给不同用户用一定时间

分布式管理阶段:20世纪80年代

软件重用阶段:20世纪90年代

代码复用的思想,面向对象

Web服务阶段:21世纪初至今

之前将单台计算机视为服务器,在拆分后,多台计算机提供不同服务,合起来又是大型服务

电子计算机的分类

处理信号不同

  • 模拟计算机:模拟信号,连续的,电磁波容易受到干扰
  • 数字计算机:数字信号,离散的

用途不同:

  • 专用计算机:完成特定功能

    路由器、交换机

  • 通用计算机:能完成很多很多

    巨型机、大型机:科学计算

    中型机、小型机:服务器

    微机:个人使用,PC机

    单片机:工厂自动化流程控制

计算机系统的结构

计算机硬件的基本组成

  • 输入设备
  • 输出设备
  • 存储器
  • 运算器
  • 控制器

依靠总线相互连接

image-20221230190327425

输入输出设备称为IO设备:相对于CPU/主机,来看输入输出

控制器和运算器合起来称为CPU

存储器

包含:

主存:内存,内存条

辅存:外存,硬盘,光盘,U盘等等

以主存为例

image-20221230193506178

存储单元放置二进制位,是字节的倍数

存储字的长度简称存储字长

前方编号,当前存储单元的地址,有多少地址乘以字长,就有多少个比特位,除以8得到字节

地址寄存器:MAR,存储地址

数据寄存器:MDR,存储数据

寄存器放置的数据很小,一般和CPU相当

时序控制器:控制不同操作的先后顺序,发送相关指令,读或者写

时序控制器,按照地址寻找,走地址总线,到存储体,存储体接收时序控制器的信号,读或写,放到数据寄存器。

存储体容量=2^MAR位数*存储字长bit

运算器

image-20221230194633487

ALU:进行核心运算

GPRs通用寄存器组:临时存储

控制器

image-20221230195114462

控制单元CU:分析指令,给出控制信号

程序计数器PC:寄存器,存放下一条指令地址,+1

指令寄存器IR:存放当前指令

冯·诺依曼计算机结构

  • 入/出/存/算/控

  • 采用二进制表示数据和指令

    以同等地位在存储器中,按地址寻访

    指令有操作码地址码组成,构成一个二进制码

    指令按顺序存放和执行,也可改变指令顺序

  • 采用存储程序方式

    事先编制好程序,并与所需数据预先存入主存,控制器自动地、连续地从存储器取出指令并执行

image-20221230200250717

主要以运算器为核心

image-20221230200925021

控制器发起,控制器操作

现代计算机组织结构

  • 入/出/存/算/控
  • 采用二进制表示数据和指令
  • 采用存储程序方式
  • CPU:运算器与控制器合并到微处理器
  • 存储器为核心,IO设备尽可能绕过CPU

现代计算机运算器不再是性能瓶颈

image-20221230201813812

输入输出将信息存储到存储器,CPU直接从内存中读取,减少IO设备和CPU的交互

image-20221230201937190
image-20221230202300451

计算机的工作过程

程序如何运行?

image-20221230202947464
  • 从源文件到可执行文件

    1. 预处理阶段

      高级语言:C/C++、Java、GO

      删除注释;

      引入包含文件;

    2. 编译阶段

      汇编语言:指令代码(计算机依旧不能识别

    3. 汇编阶段

      机器语言:二进制编码(计算机唯一能够识别的语言

    4. 链接阶段

      +库函数

计算机的性能指标

机器字长

基本概念:也叫基本字长,参与运算的二进制数据的位数决定了寄存器、ALU、数据总线位数,代表了运算精度

易混淆概念:

所有字长都必须是字节的整数倍

机器字长:一般等于内部寄存器的大小

指令字长:一个指令包含的二进制码的位数

存储字长:存储单元的二进制码的长度/位数

image-20221230204110498

指令字长和机器字长没有任何关系

存储字长和他们也没有关系

64位的机器,说明内部寄存器都是64位,一次ALU可计算64位

Q:8位存储单元放不下16位指令单元怎么办?

A:取两次,一次取两个存储单元

主存容量

基本概念:一般指主存的最大容量,单位是字节Byte

image-20221230204717402

运行时程序和数据都在主存中,主存容量越大,可运行的程序就越多,MAR位数决定了可寻址范围的最大值(但不一定是当前机器安装内存的容量)

运算速度

image-20221230211119602
  • 吞吐量和响应时间

    吞吐量:单位时间内处理的请求数量

    信息输入内存的速度

    CPU取指令的速度

    数据取出/存入内存的速度

    从内存转出到外部设备的速度

    响应时间:从用户发送请求到收到响应经过的时间

    CPU时间(运行程序花费的时间)

    等待时间(磁盘访问/主存访问/IO操作/OS开销/网络传输)

  • CPU时钟周期和主频

    CPU时钟周期:单个动作所花费的时间

    节拍脉冲或T周期,即主频的倒数

    CPU中最小的时间单位,每个动作至少一个时钟周期

    单位:秒

    主频(CPU时钟频率):单位时间完成基本动作的数量

    机器内部主时钟的频率

    主频越高花费时间越短,执行指令速度越快

    单位:Hz(赫兹),即次数/秒

    时钟周期=1/主频,互为倒数

  • CPI(Clock cycle Per Instruction)

    执行一条指令所需的时钟周期数

  • CPU执行时间

    即运行一个程序所花费的时间

    =CPU时钟周期数/主频=(指令条数*CPI)/主频

    三要素(相互制约)

    • 主频(时钟频率)
    • 每条指令所用的时钟周期数(CPI)
    • 指令条数
  • 其他(了解)

    MIPS:Million Instructions Per Second

    =指令条数/(执行时间*10^6)

    MFLOPS:Mega Floating-point Operations PS

    =浮点数操作次数/(执行时间*10^6)

    GFLOPS:Giga Floating-point Operation PS

    =浮点数操作次数/(执行时间*10^9)

    TFLOPS:Tera Floating-point Operations PS

    =浮点数操作次数/(执行时间*10^12)