首页 > 编程知识 正文

计算机系统基础知识,计算机及系统知识

时间:2023-05-06 09:46:52 阅读:158638 作者:3436

这是CSAPP-like的一系列博客

通用电子计算机历史上第一台通用电子计算机是宾夕法尼亚大学于1946年开发的ENIAC,采用十进制,是一台可编程图灵完整的电子计算机。

之后,Von Neumann加入了ENIAC的研究开发小组,进行了新的“存储程序式通用电子计算机”EDVAC的研究开发。

因此冯诺伊曼以“关于EDVAC的报告书草案”为题发表了全新的'存储程序式通用电子计算机方案'。

在该方案中,提出了冯诺伊曼的体系结构

但是,最先完成的存储程序计算机不是1951年完成的EDVAC,而是1949年剑桥大学开发的EDSAC

计算机系统的基本组成和基本功能计算机是可以对数字化信息进行自动、高速运算、逻辑运算的处理装置

美丽的毛豆结构大多数现代通用计算机采用美丽的毛豆结构

美丽毛豆结构的主要思想如下。

计算机位于运算器控制器, 由存储器I/O设备这5个基本部件构成的各部件的基本功能为http://www,在形式上两者没有区别,为01系列(不是根据储存位置来区分)存储器能够逐条进行控制器加减乘除四则运算,此外,能够进行几个逻辑运算和追加运算的操作员可以通过运算器, 在经由输入设备与主机通信的计算机内部可以用输出设备表示命令和数据。各命令由操作码和地址码构成,操作码表示操作类型

地址代码表示操作数的地址。 程序由一系列命令组成,采用二进制作业方式

计算机完成的工作首先被编写成程序,然后程序和原始数据被送入主存并开始执行

程序启动后,计算机就能在不需要人工干预的情况下,自动逐条读取和执行命令,结构精美的计算机也被称为“漂亮的毛豆机器”

初期的部件之间通过分散方式连接,但现在部件之间多通过总线方式连接

存储程序:“存储程序”的工作原理

数据和指令依次存储在存储器中,存储器上的每个存储单元按一定的存储器单位进行寻址

在执行指定开头PC位置的PC取入指令解码取入操作数的执行指令写回结果来修正PC值并执行下一个指令的指令执行中,从存储器取入CPU,存储在CPU的寄存器中; 命令是IR,数据是GPR;

命令指定的信息:

操作码(操作性质)源操作数1或/和源操作数2 )单眼运算/双目运算) )操作数格式:即时数、寄存器型号、存储器地址)的目的操作数地址) (结果:寄存器编号、存储器地址)

描述存储地址有关操作数数据结构的计算机实现的所有任务都是通过执行一条指令完成的

计算机中的基本部件(微结构) ) ) )。

CPU :中央处理器; PC :程序计数器; MAR :存储器地址寄存器;

ALU :算术逻辑部件; IR :指令寄存器; MDR :存储器数据寄存器;

GPRs :通用寄存器群(由几个通用寄存器构成,初期为累加器);

总线:地址总线(AddressBus,AB )、控制总线(ControlBus,CB )、数据总线(DataBus,DB )、

其中:

运算器(数据运算) ALU、GPRs、标志寄存器等存储器)数据存储)存储器阵列、地址译码器、读写控制电路总线(数据传送)数据(MDR )地址) MAR )和控制线控制器)

程序记录在纸带或卡片上,穿孔表示0,无穿孔表示1

用按钮、开关输入; 灯等的输出

例如,下面的机器代码程序在这里假设0010表示某些跳转指令

0336001010110133600010010010023360 .. 43360011001153360 .上述程序在执行至第1条命令时,会跳到第4条命令

逻辑程序的逻辑稍有变化时,例如在2和3之间放入命令

用命令1重新计算转移目标,重新制作穿孔卡片

机器语言与机器有关,不同的机器可能使用不同的机器语言

总之,机器语言可以直接由计算机执行,但机器语言不适合写程序

汇编语言基于机器语言为计算机的工作方式

汇编语言程序由汇编指令组成,

机器语言

命令:

包含操作码和操作数或其地址码

只能记述一个数; 两个数之间的运算(例如加减乘除和或); 基于运算结果判断是否执行转义

add Bjc

L0............L0: sub C......B: ......C: ......

如上述程序,增加某行指令,无须再重新计算指令地址

汇编语言使用更便于阅读的符号,且增减指令无须修改其他指令中的指令地址
但是计算机并不能直接执行汇编语言程序,汇编语言程序需要用汇编程序(汇编器)转换为机器语言
且汇编语言与机器相关,可移植性差

汇编语言与机器语言均面向硬件,有时合称为机器级语言

总之,在程序的编写上,汇编语言优于机器语言,但是还是有点难办

高级程序语言

随着计算机科学与技术的发展,出现了许多高级编程语言

与具体机器结构无关(辣鸡C语言,狗头 )面向算法描述,抽象能力更强一条语句可能对应几条,几十条,甚至几百条指令有编程思想之分(面向过程、面向对象等)处理逻辑基本包括:顺序结构,选择结构,循环结构有两种转换方式 编译执行:将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可解释执行:每次执行时将高级语言程序逐条翻译成机器指令并立即执行,不生成目标文件 hello world 程序的转换处理过程


编辑好源程序hello.c,hello.c肯定是不能直接在计算机上执行的
在GCC/Linux平台下,hello.c(源程序 文本) 经预处理得到hello.i(源程序 文本),
再经编译得hello.s(汇编语言程序 文本),继续经过汇编得到hello.o(可重定位目标程序 犹豫的悟空),
hello.o与其他可能用到的.o文件(如 printf.o )链接后,得到可执行二进制程序hello

不同层次语言之间的等价转换入下

程序开发与运行环境

早期的程序由于是由机器语言编写,直接输入指令和数据,
启动时把第一条指令地址送入程序计数器PC即可

而高级语言需要复杂的支撑环境

语言处理系统
  编辑器:编辑源代码
  翻译程序:
    编译方式:预处理程序、编译器、汇编器、链接器
    解释方式:解释器
操作系统
  人机接口:
    图形用户界面(GUI)
    命令行用户界面(CUI)
  语言的运行时系统
  操作系统内核
指令集体系结构
计算机硬件

语言处理系统运行在操作系统之上,操作系统利用指令管理硬件

计算机系统层次结构

计算机系统层次是与编程语言的抽象过程对应的

机器语言汇编语言高级语言
(现代(传统)计算机系统的层次)应用程序应用程序汇编程序语言处理系统应用程序操作系统操作系统指令集体系结构指令集体系结构指令集体系结构计算机硬件计算机硬件计算机硬件

指令集体系结构是对计算机硬件的抽象,而机器语言直接编写指令,故应用程序直接构筑在指令集体系结构上

汇编语言出现之后,应用程序需要通过汇编程序翻译为指令,
而汇编语言程序的编写需要有与计算机交互的界面等,这些由操作系统来提供

现代高级语言出现后,高级语言编写的应用程序需要语言处理系统转换为机器指令,
程序的编写环境、运行环境也由操作系统提供

计算机系统的抽象层

下图中,上层是下层的抽象与应用。下层是上层的具体实现

程序的执行结果不仅取决于算法程序编写,而且取决于语言处理系统(翻译)
操作系统(服务例程)ISA微体系结构

计算机系统的不同用户所在的层次:

可以看出,ISA是非常重要的层次,它是硬件的抽象,所有的软件都建立在ISA之上,ISA是软件和硬件的接口

指令集体系结构

指令集体系结构ISA,Instruction Set Architecture,指令系统
ISA是通用计算机系统中必不可少的一个抽象层,它是一种规约(Specification),规定了如何使用硬件,包括:

可执行的指令的集合,包括指令格式操作种类操作数类型等操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途操作数所能存放的存储空间大小存放方式(大小端)编址方式指令获取操作数的方式,即寻址方式指令执行过程的控制方式,包括程序计数器(PC)条件码定义

ISA和计算机组成(微结构)(IA-32、MIPS、ARM等)有很大关系,因为不同微结构的硬件组成有差别
计算机组成必须能够实现ISA规定的功能,如提供GPR等
同一ISA可以有不同的计算机组成,如有些指令可以由不同的硬件实现

本系列博客的内容:

2019/8/9

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。