计算机系统

深入理解计算机系统 从底到高 第一注意抽象 第二不要把硬件软件对立而谈

计算机系统:重要的事情:只要给不同计算机足够时间,理论上都可以实现相同的事情;计算机将自然语言通过自上到下七个层次转换成计算机能理解的东西

从上而下是 问题 算法 程序 isa指令集 微结构 逻辑电路(晶体管) 器件

学习路径是从下往上 从硬件到软件 从器件到程序以上就不讲了

补码

的主要特点是,正数的补码表示与其二进制表示相同,而负数的补码表示通过将正数的补码按位取反,然后加 1 来得到。这种表示方法使得在计算机硬件中可以使用相同的加法器来执行正数和负数的加法,从而简化了运算。

无符号乘法

也简单,部分乘然后按位相加 移位相加,最后的积为A和Q

n位二进制范围

有符号 表示 2^(n-1) 到 (2^(n-1))-1

00=0 01=1 10=-2 11=-1

000=0 001=1 010=2 011=3 100=-4 101=-1 110=-2 111=-3

三码

  1. 原码(Sign-and-Magnitude)
    • 最高位表示符号,0表示正数,1表示负数。
    • 其余位表示数值的绝对值。
    • 例如,+5的原码是00000101,-5的原码是10000101。
  2. 反码(Ones’ Complement representation)
    • 最高位表示符号,0表示正数,1表示负数。
    • 正数的反码与原码相同。
    • 负数的反码是对其绝对值的每一位取反。
    • 例如,+5的反码是00000101,-5的反码是11111010。
  3. 补码(Two’s Complement representation)
    • 最高位表示符号,0表示正数,1表示负数。
    • 正数的补码与原码相同。
    • 负数的补码是对其绝对值的每一位取反,然后加1。
    • 例如,+5的补码是00000101,-5的补码是11111011。u

区别:

  • 原码、反码和补码都有符号位,但它们对负数的表示方法不同。
  • 反码和补码都可以表示0,而原码有两个不同的表示,+0和-0。
  • 补码是最常用的有符号整数表示法,因为它在加法和减法操作中更方便,负数的补码可以通过取反和加1来获得,这使得加法和减法的实现更为简单。

在计算机中,通常使用补码来表示有符号整数,因为它在算术运算中更加方便和一致。反码和原码虽然有其理论上的意义,但在实际计算中较少使用。

易:将十进制数转换成n位二进制某码形式

难:将n位二进制某码转换回十进制

操作术语

AND 交

OR 并

NOT按位取反

XOR异或(相同0,不同1)


小数 二进制?

101000.101=40.625

$$
2^{ – 1} 2^{-2} 2^{-3}这样算
$$

并非所有小数都能转换成二进制

IEEE原则表示一个float数 使用二进制

先把一个十进制数转换成二进制数

再把这种二进制数用科学计数法形式表示

最后把科学计数法表示的二进制数转化成IEEE原则float储存在计算机里

$$
符号位+(0/1) 指数位(8位 数据-二进制的127(0111|1111)为实际指数) +尾数位
$$

例如120.5 转化成(无符号)111 1000.1 -》 1.111000×2^6

符号位0

八位指数部分要加上0111|1111,也就是用2进制的6(0000|0110)来加 127 = 1000|0101

最后尾数部分照着写 1110 0000 0000 0000 0000 000 共23位

1+8+23 =32位

ans=0 1000 0101 1110 0000 0000 0000 0000 000

32位IEEE浮点数的8位指数位不能全为0也不能全为1,规定的

指数位能表示的范围是(无符号的情况下是1-254) -127后变成 -126-127

用于表示-1270000 0000被用来表示subnormal number了,

而用于表示1281111 1111被用来表示non-number了.

所以实际上32位浮点数的指数部分只能取到只能取到[-126, 127]

指数部分全为1 两种情况 尾数全为0 == 正无穷 尾数不全为0== NaN 不是一个数

十六进制

最高位0-7为正数 8-f为负数 为什么

有些是0x开头 有些是x开头?

不区分大小写

以上第二章总结:

整数表示 有符号 无符号 原码 反码 补码

IEEE 32位浮点数 有个问题 不能表示0附近很小的数

浮点数加减容易产生误差 因为需要小数点对齐?

表达汉字的办法!!

区位码的十六进制表示+2020H=国标码(交换码)

国标码+8080H=机内码

当时保留了ascii码的前几个字符 所以加上了2020H

国标码又加上3473H的原因:将高位赋1??

第三章:逻辑电路

晶体管 我们专业最底层

金属氧化物半导体 MOS

晶体管越多

LC-3

一般pMOS接高电压 nMOS接地

MOS管 有n型 n型(高压导通) 和p型(无压导通)

p型有一个圈 表示反

n型是高电压连接,低电压断开

p型相反

逻辑电路里 2.9v左右视为高电压 为1

低电压视为0

接地是0

构建逻辑门电路

实现逻辑函数的CMOS电路称为“逻辑门电路”

逻辑门的前提是CMOS电路!! 要同时包含nMOS和pMOS

非门

换个思路

其实改变晶体管不就是改变二进制的00 01 10 11 ,然后再把结果转化成需要的东西

或非门

或门

比较复杂 ,机器通过或非门非门连接以达到效果

或非门的输出连接到非门的输入

与非门

并联

与门

同理 与非门+非门

与门与或门的转化

在输入端加反


以后的简化表示法

与门是子弹(有平的部分) 或门是箭头

运算后还应有储存

3.1-3.2 3.4-3.9

3.13 .15 .23 .25

汇编语言与编译器有关 不同编译器的语法有区别

组合逻辑电路

译码器

输出有且仅有一个为1,可以通过结果反推输入

结果单一 ,但可通过出结果的位置定不同情况的输入

多路复用器(用于选择)

包含与门和或门

根据不同输入定结果,输入是多变的,输出也是多变的

$$
N个选择线,2^n个输入,1个输出,输入用AND,输出用OR
$$

全加器

包含与门和或门

从真值表入手

储存单元

R-S锁存器

RS锁存器(RS flip-flop)是一种基本的数字电路元件,通常用于存储1比特(一个二进制位)的数据。虽然它的名称听起来很复杂,但可以用一个比较简单的方式来理解它,就是通过两个信号来控制它的状态。

RS锁存器有两个输入信号:R(Reset)和S(Set)。这两个信号的作用如下:

  1. R(复位)信号: 当R信号为1时,锁存器的状态被强制重置为0,即使S信号为1。这就意味着无论之前锁存器的状态是什么,只要R信号变成1,输出就会变成0。
  2. S(设置)信号: 当S信号为1时,锁存器的状态被强制设置为1,即使R信号为1。这意味着无论之前锁存器的状态是什么,只要S信号变成1,输出就会变成1。

RS锁存器有两个输出:Q 和 ~Q。Q 是锁存器的输出,~Q 是Q的反相输出。

现在让我们用一个更具体的例子来理解它,假设我们使用一个RS锁存器来存储一个灯的状态,这个灯可以是开(1)或关(0)的状态:

  • 如果我们将R信号设置为1,那么无论之前灯的状态是什么,它都会被迫关闭(设置为0)。
  • 如果我们将S信号设置为1,那么无论之前灯的状态是什么,它都会被迫打开(设置为1)。
  • 如果既没有R信号也没有S信号设置为1,那么锁存器将保持之前的状态,不会改变。

这就是RS锁存器的基本工作原理。它是一种简单的存储器件,可以用来控制和存储数字信息的状态。然而,需要注意的是,RS锁存器有时会出现不稳定的状态,需要额外的电路来解决这个问题,所以在实际应用中,常常会使用更复杂的锁存器类型,如D锁存器或JK锁存器。

门控D锁存器

寄存器

放在cpu的里面

内存

有两种存址方式 大端序和小端序

  • Big-endian:高位字节存入低地址,低位字节存入高地址
  • Little-endian:低位字节存入低地址,高位字节存入高地址

大端序 小端序

网络协议是采用的大端序 BIg-endian

ram

s ram d ram

static SRAM和Dynamic Random Access Memory,DRAM都是随机存取存储器,但是它们的内部结构和寻址方式不同。SRAM是静态随机存取存储器,不需要刷新电路即能保存它内部存储的数据,而DRAM是动态随机存取存储器,每隔一段时间,要刷新充电一次,否则内部数据会消失。

ram 和 rom

RAM为随机存储,掉电不会保存数据,而ROM可以在掉电的情况下,依然保存原有的数据。

有些ram内置了电源 为了经济的情况下保存数据

想起了老计算机 掉电后系统时间归零

rom

闪存 flash memory

非溢失性 比如u盘 固态硬盘

cd-rom

CD-ROM(Compact Disc Read-Only Memory)即只读光盘,是一种在电脑上使用的光碟。这种光碟只能写入数据一次,信息将永久保存在光碟上,使用时通过光碟驱动器读出信息。CD的格式最初是为音乐的存储和回放设计的,1985年,由SONY和飞利浦制定的黄皮书标准使得这种格式能够适应各种二进制数据。有些CD-ROM既存储音乐,又存储计算机数据,这种CD-ROM的音乐能够被CD播放器播放,计算机数据只能被计算机处理。

RAM和ROM都是计算机存储器的一种,其中RAM是随机存取存储器,ROM是只读存储器。RAM的特点是数据可以随机存取,读取和写入速度非常快,但需要不间断的电源供应;而ROM可以在掉电的情况下,依然保存原有的数据,但只能读不能写 。

与这些存储器相关的逻辑结构包括:CPU、Cache、主存储器、外存等。其中,Cache是一种高速缓存,分为L1 Cache和L2 Cache两种,用于减少CPU访问主存储器的次数;主存储器又称为主存或内存,是计算机中用于存储数据和程序的部件;外存包括硬盘、光盘等,用于长期存储数据 。

计算机系统里与内存相关的逻辑结构

寄存器、Cache、主存储器、外存和磁盘缓存等。

寄存器是CPU里面的一组高速存储单元,用于保存指令和数据;

Cache是一种高速缓存,分为L1 Cache和L2 Cache两种,用于减少CPU访问主存储器的次数;

主存储器又称为主存或内存,是计算机中用于存储数据和程序的部件;

外存包括硬盘、光盘等,用于长期存储数据;

磁盘缓存是一种介于主存和硬盘之间的存储设备,用于提高硬盘的读写速度

寻址空间

寻址能力(Addressability):寻址能力通常指的是一个地址单元(通常是一个字节)中可以存储的位数,而不是位中能存的 bit 数量。如果寻址能力是 2 字节,那么一个地址单元可以存储 2 字节的数据,一个字节通常等于 8 位,所以一个地址单元可以存储 16 位(2 字节 * 8 位/字节)。但是,它不是指一个位中能存储的 bit 数量,一个位仍然只能存储 1 个 bit。

总容量(以位表示) = 寻址空间大小(以位表示) * 寻址能力(以字节表示)

寻址能力

总容量(以位表示) = 寻址空间大小(以位表示) * 寻址能力(以字节表示)

寻址空间(Address Space):寻址空间指的是在内存或存储器中可以被寻址或访问的地址的范围,通常以位数来表示。如果寻址空间是 5 位,那么你有 2^5 个唯一的地址,也就是 32 个地址空间。每个地址对应一个存储单元,通常是一个字节(8 位),但这并不是寻址空间的直接定义,而是寻址能力的一部分。你可以有 32 个地址,每个地址对应一个字节,或者你可以有 32 个地址,每个地址对应一个半字节(4 位),这取决于内存或存储器的设计和配置。

总结

所以,寻址能力描述的是一个地址单元中可以存储的数据大小,而寻址空间描述的是可寻址的地址数量。这两个概念一起决定了内存的容量和数据粒度。

例如:2^2×3内存

2^2代表内存的地址空间大小为4,3代表寻址能力为3-bit宽度

即该内存的地址空间为4并按3位寻址。

大小为2^2的内存地址需要2-bit来表示

寻址能力为3,意味着每个内存位置能存储3-bit信息。

32MB=32x8bit

真正的内存不是由门控D锁存器构成的

左边A【1:0】有2根线 有22 种可能 00 01 10 11 4根字线往右边拉

这些都能算字线 往右边数 有几个框则寻址能力就是多少 3 然后根据字线指的多少 比如11 =3 那么 就是最下面 101

22 这里00没画出来;寻址能力从上往下拉 4 地址为2 也就是10 的最右边 从上往下拉 0001

时序逻辑电路

书上给出的概念 组合逻辑电路 加上存储单元 形成时序逻辑电路

时序逻辑电路中具有存储单元,可以跟踪电路以前的状态

时序逻辑电路的输出是由当前输入信号和存储单元信息共同决定的,存储单元中的数据反映了电路之前的状况

应用层:

####

组合密码锁

状态的概念

state

State Machine 状态机

状态 是 系统在特定时刻和特定条件的下的快照

有限状态机

五个组成部分:

  1. 状态
  2. 外部输入
  3. 对外输出
  4. 任意状态间迁移
  5. 对外输出操作
1、状态图

下一个状态依赖于现在的状态和输入

2、时钟

比如cpu 的xxxxHz 跟这个时钟周期成反比 Hz频率越高 时间周期越短

CPU 核是指计算机处理器中的一个独立处理单元,它可以执行特定的指令集和计算任务。每个 CPU 核都有自己的寄存器、算术逻辑单元(ALU)和控制单元(CU),它们协同工作以完成各种计算任务。

Hz(赫兹)是频率的单位,表示每秒钟发生的周期数。在计算机领域中,Hz 通常用于描述 CPU 时钟速度,即 CPU 每秒钟可以执行多少次指令。例如,一个 3.5 GHz 的 CPU 意味着它每秒钟可以执行 3.5 × 10^9 次指令。

时间周期是指计算机处理器执行一次指令所需的时间。时间周期通常与 CPU 时钟速度成反比,即时钟速度越高,时间周期越短。在实际应用中,时间周期的长度对处理器性能有很大影响,因为处理器需要在短时间内完成大量计算任务。

Q:时间周期短的处理器性能一定好吗?

不一定。处理器的性能不仅取决于时间周期,还取决于其他因素,如核心数、缓存大小、架构等。虽然时间周期短的处理器可能在某些情况下表现更好,但这并不是绝对的。

多核可以并行处理 但核多 性能也会有瓶颈问题 有公式 xxx + f/N N为核数,核多了 加的那个数变小 但最小加0 ;

有限状态机的实现

1、组合逻辑
2、存储单元

有限状态机(Finite State Machine,简称FSM)的存储单元通常使用主从锁(Master-Slave Locks)而不是D锁,原因如下:

  1. 读写操作分离:主从锁允许多个读线程同时访问共享数据,而写线程在写入数据时会独占锁。这样可以提高并发性能,因为读操作通常比写操作更频繁。
  2. 避免死锁:当一个线程持有锁时,其他线程必须等待该锁释放才能继续执行。如果使用D锁(又称为悲观锁或排它锁),则所有线程都会尝试获取锁,可能导致死锁。而使用主从锁可以避免这种情况,因为写线程在写入数据时会独占锁,从而避免了死锁的发生。
  3. 更细粒度的控制:主从锁允许更细粒度的控制,例如只锁定部分数据结构。这在某些情况下可能非常有用,例如在分布式系统中,只需要锁定部分数据结构以确保数据的一致性。
  4. 减少锁竞争:由于主从锁允许多个读线程同时访问共享数据,因此可以减少锁竞争,从而提高系统的并发性能。

Q

1111 1111 八位 二进制既可以表示-127也可以表示-0吗?

原码-127 反码-0 补码-1

本技术内容仅供学习和交流使用,如有疑问请联系qq2014160588并注明来意。请确保在使用过程中遵守相关法律法规。任何因使用本技术内容而导致的直接或间接损失,作者概不负责。用户需自行承担因使用本技术内容而产生的所有风险和责任。请勿将本技术内容用于任何非法用途。
上一篇
下一篇