美文网首页
计算机组成原理与体系结构笔记(1)计算机发展历程

计算机组成原理与体系结构笔记(1)计算机发展历程

作者: 仍有不归期 | 来源:发表于2020-06-13 17:28 被阅读0次

    计算机组成原理与体系结构笔记(2)数制与编码

    计算机系统概述
    这篇笔记是基于 《计算机组成原理与体系结构》 的学习笔记

    一.计算机的发展历程:

    • 五个阶段:

    1.电子管时代(1946 - 1957):

    1945年,stored-program(存储程序)控制计算机的构想。
    1946年,时代的开端,第一台通用电子计算机ENIAC诞生。

    2.晶体管时代(1958 - 1964):

    1960年,流水线计算机、逻辑指令登场
    1964年,DEC公式,PDP-8小型机,第一个采用总线架构的计算机。

    3.集成电路时代(1965 - 1971):

    1970年,IBM360/85机型第一次采用了缓存(cache)。
    1971年,Intel发布了芯片 Intel4004,第一种微处理器芯片。

    4.大规模集成电路时代(1972 - 1990):

    1973年,Intel8008 , 和4004一样都是基于累加器结构的CPU
    1980年,RISE(Reduced Instruction Set Computer)精简指令集计算机设想的提出

    5.巨大规模集成电路时代(1991 - ):

    主要继续由因特尔独领风骚

    • 一些概念:

    (1). MPU:Micro Processor Unit ,微处理器,又称中央处理器(CPU)。MPU/CPU = ALU(算术逻辑单元) + CLU(控制逻辑单元) + R(寄存器)
    (2). MCU:Micro Controller Unit,微控制器, 又称单片机,他将组成微型机的所有部件集合在一个芯片上构成。有以下优点:
    --------成本低、低延迟、易于获取数据、容易控制、专一性
    (3). DSP:Digital Signal Processing,数字信号处理芯片,是一种专门用于处理数字信号运算的微处理器
    (4). FPGA/CPLD:可编程芯片,需要用户自行构造逻辑功能的数字电路

    二.计算机系统的基本组成:

    计算机系统由硬件系统和软件系统两部分组成,具体构成看以下树形图:

    系统构成--来源:老师课件,侵删
    1. 尽管计算机硬件技术已经发展到了现在,大多数计算机基本结构依然具有冯诺依曼体系结构的特征。
    冯诺依曼体系结构:
    • 采用存储程序工作方式。
    • 计算机由运算器、控制器、存储器、输入设备和输出设备五个基本构件构成。
    • 数据和程序存在一起,但计算机可以分别。
    • 计算机内部用二进制表示指令和数据,指令由操作码和地址码组成。操作码给出操作类型,地址吗给出操作数地址。程序就是指令集。


      冯诺依曼体系结构

    2. 计算机硬件主要包括:中央处理器、存储器、I/O控制器、外部设备和各类总线等。

    • 中央处理器:CPU包含数据通路和控制器,数据通路主要包含算术逻辑单元和寄存器。
    • 存储器分为外存和内存,内存包括主存储器(RAM)和高速缓存(CACHE),外存包括辅助存储器和后备存储器。
    • 外设一般是I/O设备
    • 总线是传输信息的介质,包括数据总线、地址总线和控制总线。
    硬件构成关系如下图: 硬件构成--来源:老师课件,侵删

    三.计算机系统的层次结构

    问题是由自然语言描述的,程序员需要将问题的解决策略转变为算法,再将算法转化为编程语言所描述的程序,程序经过翻译程序翻译为机器语言程序(ISA指令集),最终由计算机执行。

    翻译程序有三类:汇编程序、解释程序、编译程序

    ISA:指令集体系结构,是软件和硬件接口之间的完整定义

    计算机系统的不同用户:

    • 最终用户:使用应用程序完成特定任务的计算机用户
    • 系统管理员:对计算机进行配置、管理和维护的计算机用户
    • 应用程序员:使用编程语言编制软件的程序员
    • 系统程序员:设计和开发系统软件的程序员

    ISA下部是硬件部分、上部是软件部分:


    层次化结构

    四.程序开发与执行过程(C语言为例)

    因为程序是用来解决最终用户的应用问题,所以程序被称为用户程序和应用程序

    从源程序到可执行程序的转换过程:


    过程

    预处理、编译、汇编、链接
    main.c -> main.i ->main.s -> main.o -> main.exe(windows)

    • 预处理过程是将源文件中#起头的指令完成相应操作,比如将#include的头文件写入源文件、对#define 的内容完成替换等:
      这是一个hello.c程序,只有一行代码
      #include"need.h"
      need.h头文件内容如下:
    int main(){
        return 0;
    }
    

    预处理指令:gcc -E hello.c -o hello.i
    hello.i文件:

    # 1 "hello.c"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "hello.c"
    # 1 "need.h" 1
    int main(){
     return 0;
    }
    # 2 "hello.c" 2
    
    
    • 编译过程将预处理好的hello.i 文件翻译为汇编语言程序:
      指令:gcc -S hello.i -o hello.s
      hello.s文件:
        .file   "hello.c"
        .def    ___main;    .scl    2;  .type   32; .endef
        .text
        .globl  _main
        .def    _main;  .scl    2;  .type   32; .endef
    _main:
        pushl   %ebp
        movl    %esp, %ebp
        andl    $-16, %esp
        call    ___main
        movl    $0, %eax
        leave
        ret
        .ident  "GCC: (i686-posix-sjlj, built by strawberryperl.com project) 4.9.2"
    
    
    • 汇编过程将编译得到的hello.s 汇编程序翻译为重定位目标文件(.o):
      指令:gcc -c hello.s -o hello.o
      由于目标文件无法读懂,就不放出来了

    • 链接阶段将得到的多个目标文件和标准函数合并为一个可执行目标文件。

    高级语言、汇编语言、机器语言、控制信号相关转换示例:


    等价转换

    五.计算机系统性能评价

    计算机系统性能评价以CPU执行指令速度为核心

    一些相关概念:
    吞吐率:计算机单位时间内完成的工作量。

    响应时间(执行时间、等待时间):计算机从作业提交开始到作业完成所用时间。

    把用户感觉到的执行时间分为两个部分:CPU时间和其他时间
    CPU时间指的是CPU用于程序执行的时间:
    用户CPU时间、系统CPU时间

    CPU时间计算相关概念和指标:
    1.时钟周期:CPU主脉冲信号的宽度

    2.时钟频率:时钟周期的倒数

    3.CPI:执行一条指令所需的时钟周期数

    CPU执行时间 = 指令数 * CPI * 时钟周期
    MIPS:平均每秒钟执行百万条指令的条数
    MIPS = 时钟频率 * 10^-6 / CPI , 单位为MIPS

    每天进步一点,加油! End

    END

    相关文章

      网友评论

          本文标题:计算机组成原理与体系结构笔记(1)计算机发展历程

          本文链接:https://www.haomeiwen.com/subject/cibpzhtx.html