计算机组成原理

第一章 计算机系统概论

计算机系统的层次结构

Q1YNiF.png
Q1Ydz9.jpg

冯·诺依曼计算机的特点

  1. 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成
  2. 指令(程序)和数据以二进制同等地位地存储在存储器中,可按址寻访
  3. 指令由操作码和地址码组成
  4. 机器以运算器为中心
  5. 存储程序
    结构框图
    Q1w5Lj.png

现代计算机由三大部分组成(机器以存储器为中心)

  1. CPU(Central Processing Unit) 中央处理器,核心部件为ALU(Arithmetic Logic Unit,算术逻辑单元)和CU(Control Unit,控制单元)
  2. I/O设备(受CU控制)
  3. 主存储器(Main Memory,MM),分为RAM(随机存储器)和ROM(只读存储器)
    结构框图
    Q1wvy4.png

现代计算机硬件框图

Q10ZOH.png

Q10Mkt.png

解决复杂性管理的方法

  1. 层次化:将被设计的系统划分为多个模块或子模块
  2. 模块化: 有明确定义的功能和接口
  3. 规则性: 模块更容易被重用

存储器的基本组成

Q1rhhq.png

存储体

存储器的核心是存储体。存储体由存储单元组成,存储单元由存储元件组成。存储元件有两种状态即(0/1).
存储单元存储一串二进制代码。
存储字:存储单元中存储的二进制代码的组合
存储字长: 存储单元中二进制代码的位数
每个存储单元都有对应的地址.

MAR(Memory Address Register,存储地址寄存器)

反映了存储单元的个数

MDR(Memory Data Register,存储器数据寄存器)

反映了存储字长

运算器的结构

累加型计算机的运算器的结构
Q1yfS0.png
运算过程数据存储位置
Q1yxOO.png
Q16tnU.png
Q16h4A.png
Q1ckE4.png
Q1c85d.png

控制器的基本结构

完成一条指令的步骤
取指令 -> PC
分析指令 ->IR
执行指令 ->CU
PC存放当前要执行的指令地址,自带加一功能。
即PC+1->PC
IR存放当前要执行的命令

主机完成一条指令的过程

硬件结构
Q1239A.png
取数指令执行过程
Q120hj.png
存数指令执行过程
Q12I3R.png

执行程序的过程
OP指操作码
Ad指地址码
Q1RxdU.png

计算机硬件的技术指标

机器字长

机器字长:CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。

一般越大,越好。

计算机的运算速度

主频 一般越大越好。
核数,每个核所支持的线程数 一般越大越好
Q1fQNF.png Tm越大越好
CPI 计算机执行一条指令所需的时钟周期数 一般越小越好
MIPS 每秒处理的百万级的指令数 一般越大越好
FLOPS 每秒所执行的浮点运算次数 一般越大越好

存储容量

存储容量分主存容量和辅存容量。
主存容量指主存中存放的二进制代码的个数。
存储容量=存储单元个数x存储字长

第二章 计算机的发展史

第三章 系统总线

总线特性及性能指标

  1. 机械特性: 尺寸、形状、排列顺序
  2. 电气特性: 传输方向和有效电平范围
  3. 功能特性: 每根传输线的功能
  4. 时间特性: 信号的时序关系

总线的宽度
标准传输率
时钟同步/异步
总线复用
信号线数
总线控制方式
其他: 负载能力

第四章 存储器

概述

存储器的类型

Q5Ape1.png
Q5AZyd.png
Q5AlY8.png

现代存储器的层次结构

存储器三个主要特性的关系
Q5ABfU.png
缓存-主存层次和主存-辅助层次
Q5Avh8.png

主存储器

主存储器-概述

主存的基本组成

Q5VdRU.png

主存与cpu之间的联系

Q5V6d1.png

主存中存储单元地址的分配

十六进制数12345678H 如何在主存储器中存储的?
两种方式: 大端方式和小端方式(x86)
Q5ZGlD.png

位:我们常说的bit,位就是传说中提到的计算机中的最小数据单位:说白了就是0或者1;计算机内存中的存储都是01这两个东西。

字节:英文单词:(byte),byte是存储空间的基本计量单位。1byte 存1个英文字母,2个byte存一个汉字。规定上是1个字节等于8个比特(1Byte = 8bit)。

字:字就是由一些字符组成的,是据算计处理数据时一次存取,加工和传送的数据长度。

字由若干字节构成,字的位数叫字长,一台8位机子:一个字等于1个字节,字长为8位,如果是16位的机子,一个字等于2个字节,字长为16,字是计算机处理数据和运算的单位。

由此可见,计算机的字长决定了其CPU一次操作处理实际位数的多少,即:计算机的字长越大,其性能越好。

位、字,字节与KB的关系:
KB 1KB=1024B
MB 1MB=1024KB
GB 1GB=1024MB
TB 1TB=1024GB

设地址线是24根, 按 字节 寻址 2的24次方B=16MB 个
若字长(存储字长,机器字长)为16位, 按寻址 16MB/2 =8MW(一个字等于两个字节)
若字长(存储字长,机器字长)为32位, 按寻址 16MB/4 =4MW(一个字等于四个字节)

主存的技术指标

Q5mZZ9.png

半导体存储芯片

基本结构

Q5KaJ1.png
地址线(单向) 数据线(双向) 容量
10 4 1kx4位
14 1 16kx1位
13 8 8kx8位

用16kx1位的芯片组成64kx8位的存储器
8个芯片组组成一个16kx8位的芯片组
四个16kx8位的芯片组构成一个64kx8位的存储器

共32片

译码驱动方式
线选法

Q5M2BF.png
10根地址线译码后的线数为2的10次方

重合法

Q5MTc6.png
10根行地址线和10根列地址线译码后的线数为2的10次方乘2

随机存取存储器(RAM)

静态RAM(SRAM)
动态RAM(DRAM)

只读存储器(ROM)

主存储器-存储器与CPU的连接(重点)

存储器容量的扩展
  1. 位扩展
  2. 字扩展
  3. 字和位同时扩展
    位扩展(增加存储字长)
    用1Kx4位存储芯片组成1Kx8位的存储器
    首先,要确定片数,很简单:两片,(81)/(41)=2片
    扩展位,需要用两个芯片同时工作,所以要连接到同一条片选线。
    然后是确定1Kx8位的存储器需要的地址线和数据线的数目:
    1K=2的10次方 所以需要10根地址线
    8位,所以需要8根数据线
    所以连接方式如图:
    QHeiFJ.png
    字扩展(增加存储字的数量)
    用1Kx8位存储芯片组成2Kx8位的存储器
    首先,确定片数,很简单:两片,(82)/(81)=2片
    确定2Kx8位的存储器需要的地址线和数据线的数目:
    2K=2的11次方 所以需要11根地址线
    8位,所以需要8根数据线
    两个存储芯片不能同时工作,(同时工作会导致数据线信号混乱)
    1Kx8位存储芯片需要的地址线是十根。还剩一根地址线。我们可以通过这条剩下的地址线来确定我们取数据的芯片。
    所以连接方式如图:
    Qq7daD.png
字、位同时扩展

用1Kx4位存储芯片组成4Kx8位的存储器。
首先,确定片数,很简单:八片,(84)/(41)=8片
确定4Kx8位的存储器需要的地址线和数据线的数目:
4K=2的12次方 所以需要12根地址线
8位,所以需要8根数据线
1Kx4位需要的地址线是10根
两个1Kx4位的芯片构成一组是1Kx8位的芯片,同组芯片的片选信号一致。(扩展位)
剩余两根地址线,可以组成(00,01,10,11)四组。
所以连接方式如图:
QL921f.png

存储器与CPU连接

1、 地址线的连接(低位作为地址信号,高位作为芯片选择信号)
2、 数据线的连接(CPU的数据线数是多少条,就需要存储片扩展多少位)
3、 读/写命令线的连接 (ROM只能读,不能写,一般就是把读写信号连接到每一个芯片)
4、 片选线的连接(片选线决定了芯片的选择,首先要确定CPU访问的是存储器,MREQ为低电平时访问的是存储器,高电平访问I/O设备)
5、 合理的选择存储芯片(片选逻辑尽可能简单)

  • ROM(系统程序,配置信息的用ROM因为不需要改动)
  • RAM (用户程序、系统程序运行的区域,可读可写,用RAM)
    6、 其他(时序、负载)
    例题:
    QLi37Q.png
    QLiBBF.png

解:
十六进制转位二进制:
QLnOvd.png
八位由CPU的数据线的条数决定。

芯片的选择:

故它需要2Kx8位的ROM型存储器,1Kx8位的RAM型存储器。因为没有1Kx8位的RAM型芯片,故用两片1Kx4位的RAM型芯片来替代扩展位,需要两个芯片片选信号连接在一起。

地址线的分配:
2Kx8位的ROM型芯片需要11根地址线(2的11次方=2K)
1Kx8位的RAM型存储器需要10根地址线(2的10次方=1K)
即:
QLKypF.png

补充知识:
74138译码器通过C、B、A端的输入不同有八个输出端即(000-111 共八个)G1高电平有效,G2A,G2B低电平有效。
故需要A13连C端,A12连B端,A11连A端。(解释:138译码器是将二进制转为十进制,比如CBA=111,则输出端为Y7。此处为101和100即输出端为Y4和Y5)如果Y4有效,则选择的是ROM芯片,如果Y5有效则选择RAM芯片。

片选线选择:
G1高电平有效,故连接A14。(都为1)
G2A低电平有效,故连接A15。(都为0)
G2B低电平有效,故连接MREQ。(都为低电平有效)
要想访问RAM芯片,需要Y5有效且A10为0故需要与门共同构成片选线。
故如图:
QLJNdJ.png

例题二:
描述同上,要求最小的4K为系统程序区,相邻的8K为用户程序区。

步骤同上:
1.写出对应的二进制地址码
2.确定芯片的数量及类型
3.分配地址线
4.确定片选信号
5.确立片选逻辑

第一步和第二步:
lFUU6P.png
第三步:
分配地址线:都是4K的芯片所以都是12根地址线(A0-A11)。
第四步:
138译码器输入端C,B,A对应A14,A13,A12。
控制端G1,G2A,G2B对应直接接在电源上(或者A15取反接入),A15,MREQ。
故如图:
lFaAnf.png

存储器的校验

高速缓冲存储器

辅助存储器

  • linux三剑客

    前言之前用一些脚本都经常用到grep,sed,awk。但是一直不太熟悉,今天来学习一下,做个备忘录。 grep格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTER...

    linux三剑客
  • i春秋2020新春战“疫”网络安全公益赛 web Writeup

    前言这次比赛题目质量挺好的,除啦环境可能有时候有点问题。(就让我遇到了。心态炸了一天。。。)其他都挺好的。 DAY1简单的招聘系统知识点:sql注入的联合注入或盲注存在注册和登陆功能,首先进行注册后登陆进系统,发现有一个模块是管理员才...

    i春秋2020新春战“疫”网络安全公益赛 web Writeup
  • 2019安洵杯+2019广外比赛web部分题解

    2019安洵杯easy_web知识点:MD5强碰撞,命令执行这个题比较简单,看题目发现传入参数img和cmd,然而图片是传入的img参数控制,让我想到ddctf的一道题,然后发现img是通过把文件名进行转十六进制后两次base64编码...

    2019安洵杯+2019广外比赛web部分题解
  • bypass disfunction

    前言PHP 的 disabled_functions主要是用于禁用一些危险的函数防止攻击者执行系统命令。但是有一些绕过方法。这里做个总结。 基本思路有四种绕过 disable_functions 的手法:第一种,攻击后端组件,寻找存在...

    bypass disfunction
  • 2019极客大挑战RCE ME

    题目环境:http://114.116.44.23:40001/ 题目还是老样子。无字母数字rce。知识点其实都有写过,就不说了。详细参见:【RCE提高篇】题目源码: <?php ini_set("display_errors"...

    2019极客大挑战RCE ME
  • RCE提高篇

    前言首先,需要了解一下命令执行的函数,这里推荐几篇文章,来认识这些函数。浅谈eval和assert从底层分析eval和assert的区别命令执行与代码执行的小结巧用命令注入的N种方式命令注入绕过姿势我就不在说这几个东西,大牛们都说的很...

    RCE提高篇
  • buuctf刷题记录(序)

    love math知识点:代码审计,绕waf直接给出源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET['c'])){ sho...

    buuctf刷题记录(序)
  • phar拓展反序列化攻击面

    pharphar扩展提供了一种将整个php应用程序放入名为“phar”(php archive)的单个文件中的方法,以便于分发和安装。除了提供这个服务之外,phar扩展还提供了一个文件格式抽象方法,用于通过phardata类创建和操作...

    phar拓展反序列化攻击面
  • 基本工具使用

    常用工具nc/ncatnc被誉为网络界的瑞士军刀。它的功能可见一般。。。 侦听模式 / 传输模式 telnet / 获取banner信息 传输文本信息 传输文件/传输目录 加密传输文件 远程控制/木⻢ 加密所有流量 流...

    基本工具使用
  • buuctf刷题记录

    前言最近感觉自己菜出来新境界。。。刷点题来证明我还存在。。。言归正传。开刷 hack world知识点:sql布尔盲注,bypass进入题目,发现这是典型的sql布尔盲注,题目给出了表名和列名都是flag,用burp进行fuzz测试发...

    buuctf刷题记录