# 1.概述

## 冯.诺曼计算机硬件

![](/files/-Lr9Fh5fCBdFDjWlw35L)

## 现代计算机硬件

![](/files/-Lr9Fh5lyEUfu18-Lz5p)

系统复杂性管理的方法：

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

## 一元二次方程的程序清单

![](/files/-Lr9Fh5nRx2FFyzeRbfF)

## 计算机解题过程

### 存储的基本组成

#### 存储体

> 要能存储指令和数据，访问时：能取到指令、数据
>
> 存储体存储若干个存储单元
>
> 操作码、地址码，存放在存储单元当中

#### 存储单元

> **按地址寻址访问**，由多个**存储元件(0/1)**&#x6784;成，存储单元是个电子设备 存放的是**一串**二进制代码

#### 存储字

存储单元中二进制的组合

\>

> 一个存储字可代表一个二进制数，也可代表一串字符，如存储字为0011011001111101，既可表示为由十六进制字符组成的367DH（ASCII码），又可代表16位的二进制数，此值对应十进制数为13949，还可代表两个ASCII码：“6”和“}”。一个存储字还可代表一条指令

#### 存储字长

存储单元中**二进制代码的长度**

\>

> 存储字长：存储单元中的二进制代码（存储字）位数，存储字长可以是8位、16位、32位等。

![](/files/-Lr9Fh5pJ21tV5dkqdaA)

#### MAR、MDR

MDR定义: 全称memory data register主存数据寄存器。反应存储字长

MAR定义: 全称memory address register主存地址寄存器，反应存储单元的个数（大楼100个房间？）

> MAR 4位，则0000-1111，可以有16个存储单元，下图长方体外面
>
> MDR 8位，说明存储字字长是8位，每个MAR地址可以指到一个MDR的数据

![](/files/-Lr9Fh5rNiSY4UglMh_b)

### 运算器结构

> ACC（累加器）在加法中存放被加数/和，在减法中存放被减数/差，在乘法中存放乘积高位，除法中存储被除数/余数
>
> MQ和ACC都是运算器ALU中的部件，在乘法中存储乘数/乘积低位，除法中存商
>
> ALU算术逻辑运算单元

#### 加法操作

> +M：ACC中存储被加数，移动内存单元M的数据，到寄存器X中，两个寄存器中的数通过ALU相加，相加结果保存到ACC

![](/files/-Lr9Fh5tucqbvCciDmjq)

#### 减法操作

同加法

![](/files/-Lr9Fh5v17dqlH7P456o)

#### 乘法操作

> ACC：被乘数、M：乘数的数据
>
> M移到MQ
>
> ACC移到X
>
> ACC清零（乘法是通过累加、移位操作实现的，要有寄存器保存累加内容，所以显然累加器累加前，要清理）
>
> x乘以MQ：高位放ACC，低位放MQ。//表示两个高低位连接关系

![](/files/-Lr9Fh5xo0xqysg9j_vd)

#### 除法操作

> ACC被除数、除数数据M移到X、执行除法的ALU
>
> 商保存到MQ、余数保存到ACC

![](/files/-Lr9Fh5zMDVrUCiadBVC)

### 控制器基本结构

#### 控制器基本功能：

* 解释指令
* 保证指令顺序执行&#x20;

#### 完成一条指令需要：

* 取指令：PC（计数器）存放当前**欲执行的指令的地址**，并且具有计数功能。PC=PC+1
* 分析指令：IR（指令寄存器）存放当前**欲执行的指令**，控制单元从IR取出指令操作码进行分析
* 执行指令：CU
* 指令：保存到**存储体**当中

![](/files/-Lr9Fh60nJbgDTVKpNh_)

#### 主机完成一条指令（取数指令）的过程

取数指令为例：

* 1:PC取指令，通过从MAR拿地址，MAR地址到存储体去拿数据，最终拿到存储体中MDR到数据

![](/files/-Lr9Fh62vc0oXdoytTBq)

* 2:取出的指令数据，保存到IR

![](/files/-Lr9Fh64RhL_uy-xhKTd)

* 3:指令操作码送到CU去执行，CU译码后会产生很多信号（下图CU上面的箭头）

这些信号用于控制相应的执行部件去执行指令对应的操作

![](/files/-Lr9Fh66wg1usS_IQDK3)

这里的信号是取数指令：把保存在内存单元M中的数据取到ACC寄存器中。

这个过程会在控制器中执行：从IR中数据地址开始，678（拿到数据）、9（数据放到ACC），4个步骤。

![](/files/-Lr9Fh68EfJqG850F6PE)

#### 主机完成一条指令（存数指令）的过程

> 基本和取数指令一致：
>
> > 12345取到指令并送到控制单元CU
> >
> > 6789在IR/MAR中拿到存的地址，然后把ACC中数据存到地址对应的MDR中，（存了还需要索引到，所以）再反馈（备案、保存）到存储体中（楼管记录进出人员）

![](/files/-Lr9Fh6ApLetSMGz_w6S)

## 一元二次方程运行过程

0：回顾、根据上面的一元二次方程的程序清单执行步骤

1：取数指令，取x到ACC，过程如下（其它取数指令也是这样）（上面控制器完成指令过程的简写过程）

![](/files/-Lr9Fh6CffXH9CyxvVBm)

2：乘a得到ax，然后放到ACC：参考运算器结构中的乘法操作

....

最终打印指令

停机指令

## 计算机硬件指标

### 1.机器字长

> 指的是CPU一次能处理数据的位数
>
> 与CPU中的寄存器（指令寄存器（IR）、程序计数器（PC）、地址寄存器（AR）、数据寄存器（DR）、累加寄存器（AC）、程序状态字寄存器（PSW）等）位数有关
>
> 如果长度大完成某操作（64位）只需要一次，否则可能需要8次（8位的话）

### 2.运算速度

> 核数，以及每个核支持的线程数
>
> 指令执行速度：多指令执行时间平均、多指令加权平均（吉普森法）
>
> CPI：执行一条指令需要的时钟周期数（指令平均、加权平均周期）
>
> IPC：一个时钟周期，能执行多少指令
>
> MIPS：每秒执行百万条指令
>
> **FLOPS**：每秒浮点运算次数（同样1秒内，完成多少算法逻辑运算）

### 3.存储容量

![](/files/-Lr9Fh6ExzNoo_2sQaU8)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://im-qianuxn.gitbook.io/pytorch/ji-suan-ji/interview/1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
