【第一章-计算机系统概述】

2025年6月22日 星期日
今天开始重新捡起大学学习过的《计算机组成原理》,依稀记得当时是在考试前1周光速复习通过了考试,现如今23年毕业后早已经忘记了计算机组成原理所讲的内容。现如今有了代码的实践经验后,再去学习这门理论课,感觉应该会有不错的收获,故而写下这篇笔记。从头开始学习并记录,有种真正的实践与理论相结合的感觉,与当年为应试而学的状态不同,现在的学习带着明确的目标感,希望自己在这次学习过程中能够追根究底,有打破沙锅问到底的精神,真正的刨根问底
附上大学成绩单,留作纪念!在这里插入图片描述

1. 计算机发展历程

1.1 计算机硬件的发展

1. 计算机的四代变化

  • 从1946年世界上第一台电子数字计算机(ENIAC)问世以来,计算机的发展已经经过了四代。

  • 第一代计算机(1946-1957)-电子管时代。特点: 逻辑元件采用晶体管;运算速度提高到几万次到几十万次每秒;主存储器延迟线磁鼓存储信息,容量小;体积庞大,成本高。
    逻辑元件是什么?就像是一个个能做简单判断题的小开关,它们按照“数学规则”来决定电流是否通过,是计算机的“脑细胞”。基础单位:像乐高积木的最小块,计算机所有复杂功能都由它们组合而成。
    工作方式:类似回答问题:
    与门(AND):“爸妈都同意才能出去玩”(全对才通过)
    或门(OR):“可乐或雪碧都可以喝”(有一个对就通过)
    非门(NOT):“老师说不行就反过来做”(唱反调)
    物理形态:现代计算机里,它们是硅芯片上纳米级的晶体管,每秒可开关数十亿次。
    主存储器是什么?计算机中直接与CPU交互的临时存储设备,通常指的是内存(RAM,随机存取存储器)。百度百科-主存储器
    延迟线是什么?可以把它想象成一条“慢动作传送带”:你在这头扔进去一个信号(比如一段声音、一个电脉冲),它会慢慢蠕动到另一头,出来时已经比原来晚了几秒/几毫秒。【更详尽的解释:什么是"晚了"?想象你在玩"传话游戏":你对着一条10米长的管子(延迟线)喊"喂!"声音在管子里以每秒340米的速度传播,结果:另一头的人0.03秒后才听到你的"喂"这个"0.03秒"就是延迟线制造的"晚了"的效果】
    磁鼓是什么?可以把它想象成一个高速旋转的“铁桶”,表面涂着磁性材料(类似磁带),桶外有一圈固定的“读头/写头”(类似录音机的磁头)。当桶转动时,这些磁头就能读取或写入数据,就像老式点唱机用机械臂读取旋转的黑胶唱片一样。

  • 第二代计算机(1958-1964)-晶体管时代。特点:逻辑元件采用晶体管;运算速度提升到几万次到几十万次每秒;主存储器使用磁芯存储器;计算机软件也得到了发展,开始出现高级语言及其编译程序,有了操作系统的雏形。
    磁芯存储器是什么?磁芯存储器(Core Memory)是早期计算机使用的一种内存技术,流行于1950-1970年代。用最简单的话来说:它是由一堆微型磁环(磁芯)和导线编织成的“网格”,每个磁环可以存储一个二进制位(0或1),就像用一堆小磁铁拼成的记忆板。

  • 第三代计算机(1965-1971)-中小规模集成电路时代。特点:逻辑元件采用中小规模集成电路;半导体存储器开始取代磁芯存储器;高级语言发展迅速,操作系统也进一步发展,有了分时操作系统
    集成电路是什么?集成电路(Integrated Circuit,简称 IC),俗称芯片,你可以把它想象成一个电子元件的超级压缩包——把原本需要一屋子笨重零件才能实现的电路功能,压缩到指甲盖大小的硅片上。它是现代所有电子设备的"大脑"和"器官"。
    半导体存储器是什么?半导体存储器是现代所有电子设备的“数字记忆棒”,它用半导体材料(主要是硅)制成,能快速存储和读取数据。简单来说,就是用电子的有无来表示0和1的记忆芯片。
    第四代计算机(1972-至今)-超大规模集成电路时代。特点:逻辑元件采用大规模集成电路和超大规模集成电路,产生了微处理器;诸如并行流水线高速缓存虚拟存储器等概念用在了这代计算机中。

2. 计算机元件的更新换代

  • 摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。也就是说,我们现在和18个月后花同样的前买到的CPU,后者的性能是前者的两倍。【题外话:摩尔定律是否仍然有效的争论日益激烈。】
  • 半导体存储器的发展:1970年,美国仙童半导体公司产出第一个较大容量的半导体存储器,半导体存储器经历了存储容量的发展:单芯片:1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、256MB、1GB等等,现在可以达到1TB。
  • 微处理器的发展:自从1971年Intel公司开发出第一个微处理器Intel4004至今,微处理器经历了8、16、32、64,目前主要是64位机器字长,机器字长指r计算机一次整数运算所能处理的二进制数据位数
    打开自己电脑的cmd命令窗口,输入echo %PROCESSOR_ARCHITECTURE%,就可以看到自己电脑的机器字长了。
    在这里插入图片描述
    或者输入:systeminfo | findstr /i “系统类型”,得到下面的结果也是64位机器字长。在这里插入图片描述

1.2 计算机软件的发展

  • 计算机软件技术的蓬勃发展,也为计算机系统的发展做出了很大的贡献。
  • 计算机语言经历了面向机器的机器语言汇编语言,面向问题的高级语言,其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的FORTRAN、结构化程序设计的PASCAL到面向对象的C++和适应网络环境的Java。【作为一名Javaer,希望自己也能够在计算机软件技术发展中,努力提升自我!
  • 与此同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系统,如Windows,UNIX,Linux等。【其中Linux代表系统如Ubuntu、CentOS、Debian等在工作中目前比较经常见到。

2. 计算机系统层次结构

2.1 计算机系统组成

  • 硬件系统软件系统共同构成了一个完整的计算机系统。硬件是指的是有形的物理设备,是计算机系统实际物理装置的总称。软件是指的是在硬件上运行的程序和相关的数据及文档。
  • 计算机系统性能的好坏,很大程度上是由软件的效率和作用来表征的,而软件性能的发挥又离不开硬件的支持。对于某一功能来说,如果既可以用硬件实现也可以用软件实现,则称为软/硬件在逻辑功能上是等价的。在设计计算机系统时,要进行软/硬件功能的分配,通常来说一个功能如果使用较为频繁且用硬件实现成本较为理想,则使用硬件解决可以提供效率。

2.2 计算机硬件★★★

1.冯·诺伊曼机基本思想
冯·诺伊曼在研究EDVAC机时提出了存储程序的概念,存储程序的思想奠定了现代计算机的基本结构,以此概念为基础的各类计算机都统称为冯·诺伊曼机,其有如下5个特点:

  1. 采用存储程序的功能方式。
  2. 计算机硬件系统由运算器存储器控制器输入设备输出设备5个大部件组成。
  3. 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们。
  4. 指令和数据均为二进制代码表示。
  5. 指令由操作码和地址码组成。操作码指出操作的类型,地址码指出操作数的地址。
    存储程序的基本思想将事先编制后的程序和原始数据送入主存储器后才能执行,一旦程序被启动执行,就无须操作人员干预,计算机会自动逐条执行命令,直到程序执行结束。
    【存储程序的工作方式是计算机最核心的设计原理之一,用一句话概括就是:计算机把程序像数据一样存储在内存中,然后自动逐条取出指令执行。这种工作方式彻底改变了早期计算机的运作模式,是现代计算机的基础。
    在这里插入图片描述
//这里来使用Java实现  存储程序工作方式的简易模拟器代码。
import java.util.Arrays;

/**
 * 模拟存储程序计算机的Java实现
 * 类比你的工作经验:
 * - 内存数组 -> Redis键值存储
 * - 指令执行 -> 微服务调用链
 * - PC寄存器 -> Kafka消息偏移量
 */
public class VonNeumannSimulator {
    
    // 模拟内存(统一存储程序和数据)
    private final int[] memory = new int[256];  // 类比JVM的堆内存
    
    // 寄存器
    private int pc;      // 程序计数器(类比Kafka的offset)
    private int acc;     // 累加器(类比微服务的上下文状态)
    
    // 指令编码(模拟机器指令)
    private static final int LOAD = 0x01;  // 从内存加载到ACC
    private static final int ADD  = 0x02;  // 加法运算
    private static final int STORE = 0x03; // 存储ACC到内存
    private static final int JUMP = 0x04;  // 跳转指令
    private static final int HALT = 0xFF;  // 停机
    
    /**
     * 加载程序到内存(类比Docker镜像加载)
     * @param program 程序指令序列
     */
    public void loadProgram(int[] program) {
        System.arraycopy(program, 0, memory, 0, program.length);
        pc = 0;  // 重置程序计数器
        acc = 0;  // 清空累加器
    }
    
    /**
     * 执行一个指令周期(类比微服务调用链的一个节点)
     */
    public void executeCycle() {
        // 1. 取指令(类似从Kafka消费消息)
        int opcode = memory[pc++];  // 自动递增PC
        
        // 2. 译码执行
        switch (opcode) {
            case LOAD:
                int addr = memory[pc++];  // 取操作数地址
                acc = memory[addr];      // 加载数据
                System.out.printf("LOAD [%d] -> ACC=%d\n", addr, acc);
                break;
                
            case ADD:
                addr = memory[pc++];
                acc += memory[addr];
                System.out.printf("ADD [%d] -> ACC=%d\n", addr, acc);
                break;
                
            case STORE:
                addr = memory[pc++];
                memory[addr] = acc;
                System.out.printf("STORE ACC -> [%d]=%d\n", addr, acc);
                break;
                
            case JUMP:
                pc = memory[pc];  // 直接跳转
                System.out.printf("JUMP to %d\n", pc);
                break;
                
            case HALT:
                System.out.println("HALT");
                System.exit(0);
                
            default:
                throw new RuntimeException("Unknown opcode: " + opcode);
        }
    }
    
    /**
     * 打印内存快照(类比Arthas的memory命令)
     */
    public void printMemorySnapshot() {
        System.out.println("---- Memory Snapshot ----");
        for (int i = 0; i < 16; i++) {  // 只显示前16个单元
            System.out.printf("[%02d]: %d\t", i, memory[i]);
            if ((i + 1) % 4 == 0) System.out.println();
        }
        System.out.println("------------------------");
    }
    
    public static void main(String[] args) {
        VonNeumannSimulator simulator = new VonNeumannSimulator();
        
        // 模拟程序:计算 5 + 10 并存储结果
        int[] program = {
            LOAD, 0x10,    // 加载地址16的值到ACC
            ADD,  0x11,    // 加地址17的值
            STORE, 0x12,   // 存结果到地址18
            HALT          // 停机
        };
        
        // 初始化数据区(类比数据库预置数据)
        simulator.memory[0x10] = 5;   // 地址16存放操作数5
        simulator.memory[0x11] = 10;  // 地址17存放操作数10
        
        simulator.loadProgram(program);
        simulator.printMemorySnapshot();
        
        // 执行模拟(类似微服务调用链执行)
        System.out.println("---- Execution Trace ----");
        while (true) {
            simulator.executeCycle();
        }
    }
}

2.计算机功能部件

  1. 运算器
  • 运算器是计算机的执行部件,用于进行算术运算逻辑运算。算数运算包括如加减乘除,逻辑运算如与、或、异或、比较、移位等等。
  • 运算器的核心是【算术逻辑单元ALU】。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如ACC(累加器)、MQ(乘商寄存器)、X(操作数寄存器),IX(变址寄存器),BR(基址寄存器)等等,其中ACC、MQ、X是必须具备的。
  • 运算器内部还有程序状态寄存器(PSW),也叫标志寄存器,用于存放ALU运算得到的一些标志信息或处理器状态信息,比如结果是否溢出,有无产生进位,结果是否为负等等。
  1. 存储器★★★
  • 存储器分为主存储器(内存存储器或主存)辅助存储器(外存存储器或外存)。其中CPU能够直接访问的存储器是主存储器。辅助存储器帮助主存储器记载更多的信息,辅助存储器中的信息必须调入到主存储器后,CPU才能访问。主存储器的工作方式是按【存储单元的地址】进行存取,这种存取方式叫做按地址存取方式
  • 如图为主存储器的基本构成,存储体放二进制信息,存储器地址寄存器MAR存放访存地址,经过地址译码后找到所选的存储单元。存储器数据寄存器MDR用于暂存要从存储器中读或者写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。
  • 存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码0或者1。因此存储单元可以存储一串二进制代码,这串代码叫做存储字这串代码的位数为存储字长,存储字长可以是1B(8bit)或是字节的偶数倍。
  • MAR用于寻址,其位数反映最多可寻址的存储单元个数,如MAR为10位,则最多有210=1024存储单元,也就是1K。MAR的长度与PC长度相等。*
  • MDR的位数通常用于存储字长,一般为字节的2次幂的整数倍。在这里插入图片描述
  1. 控制器
  • 控制器是计算机的指挥中心,由控制器指挥各个部件之间自动协调工作。控制器由程序计数器(PC),指令寄存器(IR),和控制单元(CU)组成。
  • PC用于存放当前欲要执行的指令地址,具有自动加1的功能。它与主存储器的MAR之间有一条直接通路。
  • IR用来存放当前的指令,内容来自于主存储器中的MDR。
  • 一般将【运算器】和【控制器】集成在同一芯片上,成为中央处理器CPU。CPU和主存储器共同构成主机。除了主机以外的其他硬件装置统称为外部设备,简称外设。
  • 图中是冯诺依曼结构的模型机。CPU包含ALU、通用寄存器GPRs、标志寄存器、控制器、指令寄存器(IR)、程序计数器(PC)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)。在这里插入图片描述
  1. 输入设备:输入设备主要的功能就是将程序和数据以机器能够识别和接受的信息形式输入计算机。最常用的输入设备有:键盘、鼠标、扫描仪、摄像机等。
  2. 输出设备:输出设备的任务是将计算机处理的结果以人们能够接受的形式输出,最常用的输出设备有显示器、打印机。

2.3 计算机软件

2.3.1 系统软件和应用软件

  1. 软件按其功能分类,可分为系统软件和应用软件。
  2. 系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等。
  3. 应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。

2.3.2 三个级别的语言

  1. 机器语言:二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言
  2. 汇编语言:汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编写的程序,必须经过一个称为汇编程序的系统软件翻译,将其转换为机器语言后才能在计算机硬件系统上执行。
  3. 高级语言:高级语言如C、C++、Java等可以方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
  • 因为计算机无法直接理解和执行高级语言程序,所以需要将高级语言程序转换为机器语言程序,通常把进行这种转换的系统软件称翻译程序。翻译程序有以下三类: ★ ★ ★
    1)汇编程序(汇编器)。将汇编语言程序翻译成机器语言程序。
    2)解释程序(解释器)。将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
    3)编译程序(编译器)。将高级语言程序翻译成汇编语言或机器语言程序。

2.3.3 软硬件的逻辑功能等价性

计算机中的某些功能既可以用硬件设计也可以用软件设计,从用户的角度来看,它们在功能上是等价的。这一等价性被称为软/硬件逻辑功能等价性

2.4 计算机系统的层次结构

  • 软硬件的设计者和使用者从不同的角度,不同语言来对待同一个计算机系统,面对应用的范围就会很广,因此他们看到的计算机系统属性对计算机系统提出的要求也就不同。
  • 多层次结构的作用就是从各种角度看到机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便于构成合理高效的计算机系统。
  1. 第一级:微程序机器层,实实在在的硬件层,由机器硬件直接执行微指令。
  2. 第二级:传统机器语言层,也是一个实际的机器层,由微程序解释机器指令系统。
  3. 第三级:操作系统层,由操作系统程序实现,操作系统程序由机器指令和广义指令组成,广义指令是为了拓展机器功能设置的,这一层也称为混合层。
  4. 第四级:汇编语言层,这一层由汇编程序支持和执行,借此可编写汇编语言源程序。
  5. 第五级:高级语言层,面向用户的,为了方便用户编写应用程序而设置的。
  • 其中第3-5层称为虚拟机器,简单来说就是软件实现的机器。

2.5 计算机系统的工作原理

2.5.1 存储程序工作方式

【存储程序】工作方式规定:程序执行前,要将程序所含的指令和数据都送入到主存储器中,一旦程序被启动执行,不需要操作人员干预,自动逐条完成指令的取出和执行任务。
在这里插入图片描述

2.5.2 从源程序到可执行文件

在计算机中编写的C语言程序,必须被转换成一一系列低级机器指令,这些指令按照一种称为“可执行目标文件”的格式打包,并以二进制磁盘文件形式存放起来。读取源程序hello.c到把它翻译成可执行目标文件hello可以分为四个阶段。
在这里插入图片描述

  1. 预处理阶段
  2. 编译阶段
  3. 汇编阶段
  4. 链接阶段

2.5.3 执行指令过程描述

  1. 找指令(取指令)
    动作:CPU根据“小本本”(程序计数器PC)上记的地址,去内存里找到这条指令。
    流程:
    PC告诉内存地址寄存器(MAR):“我要找XX地址的指令!”
    内存翻到XX地址,把指令读出来,交给内存数据寄存器(MDR)。
    MDR再把指令送到指令寄存器(IR)里存好。
    比喻:就像你根据书签(PC)找到书里的某一页(内存地址),把那一行字(指令)抄到笔记本(IR)上。
  2. 看指令(分析指令)
    动作:CPU看看这条指令是干啥的(比如“取数”)。
    流程:
    IR把指令的操作码(OP)递给控制器(CU)。
    CU解码后说:“哦,这是取数指令!”,然后准备对应的操作信号。
    比喻:你看到笔记本上写“去冰箱拿可乐”,大脑(CU)立刻明白要干什么。
  3. 干指令(执行指令)
    动作:CPU实际执行“取数”操作。
    流程:
    IR告诉MAR:“数据在YY地址!”
    内存找到YY地址,把数据交给MDR,再送到累加器(ACC)里。
    最后,PC自动+1,指向下一条指令。
    比喻:你跑到冰箱(内存)前,打开门(读信号),拿出可乐(数据)放到手里(ACC),然后书签(PC)翻到下一页。
  • 注意点
    PC和(PC):PC是“小本本”本身,(PC)是上面写的地址。比如“(PC)+1→PC”意思是“把当前地址+1,写回小本本”。
    括号的意义:流程图中省略括号是为了简化,但运算时不能省(因为要强调“值”的变化)。
  • CPU就像一个小工人,严格按照“找→看→干”的流水线干活,每一步都精准到数据从哪里搬到哪里。这个过程保证了计算机能高速无误地运行程序。

2.6 小结★★★

  • 完整的计算机系统应包含【配套的硬件系统软件系统】。
  • IR存放当前执行的指令代码。PC存放下一跳指令地址。
  • CPU不包括地址译码器。
  • 寄存器在CPU内部速度最快。接下来是Cache,内存比Cache慢。
  • CPU由运算器和控制器两个部件组成。
  • 将高级语言源程序转换为机器级目标代码文件的程序是?【编译程序】

3. 计算机的性能指标

3.1 计算机主要的性能指标

  1. 机器字长。通常说的16位32位机器就是指的机器字长,也叫字长。字长指的是计算机进行一次整数运算(定点整数运算)所能处理的二进制位数。通常与CPU的寄存器位数和ALU有关。 一般情况下:机器字长=通用寄存器位数=ALU宽度。字长越长,数的表示范围越大,计算精度越高,计算机字长一般选8的整数倍。
  2. 数据通路带宽。数据通路带宽指的是数据总线一次所能并行传送信息的位数。这里的数据通路宽度是指外部数据总线宽度,与CPU内部数据总线宽度(内存寄存器的大小)可能不同。
  3. 主存容量。主存容量一般是指主存储器所能存储信息的最大容量,通常以B字节来衡量。MAR的位数反映了存储单元的个数MDR的位数反映了存储单元的字长。例如MAR位16位,216=65536,也就是表示此存储体内有65536个存储单元。也就是65536/1024=64KB,如果MDR为32位则表示存储容量为64K*32位。
  4. 运算速度
  • 吞吐量和响应时间。吞吐量指的是系统单位时间处理的请求数量。响应时间指的是用户向计算机发送一个请求,到系统对该请求做出响应并获得结果的等待时间。
  • 主频和CPU时钟周期。CPU时钟周期指的是CPU中最小的时间单位,由主板上的时钟发生器(晶振)产生,表现为周期性高低电平脉冲。
    CPU就像一支乐队,每个操作(取指令、计算、存数据)都需要按节奏进行。时钟周期就是鼓点,每“咚”一下,CPU就做一个微小的动作(比如读取一个数据或计算一步)。
    鼓点越快(频率越高),CPU干活越快。
    鼓点越慢(频率越低),CPU干活越慢。
    1个时钟周期 = 1次“咚”的时间,比如:
    如果CPU主频是 4 GHz(每秒40亿次“咚”),那每个“咚”的时间就是 0.25纳秒(1秒 ÷ 40亿)。
    主频:主频 = CPU的“心跳速度”,越高算得越快,但发热耗电也越大。现代CPU不光拼主频,更看重架构和核心数!机器内部主时钟的频率,也就是时钟周期的倒数。
    CPU时钟周期=1/主频,主频通常以Hz为单位,10Hz代表每秒10个时钟周期。
  • CPI(Cycle Per Instruction),即执行一条指令所需的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或者一台机器来说,其CPI指该程序或该机器指令集中所有指令执行所需的平均时钟周期数,即平均CPI。
    IPS=每秒执行多少指令=主频/平均CPI。
  • CPU执行时间。指运行一个程序花费的时间。
    CPU执行时间=CPU时钟周期数/主频=(指令条数*CPI)/主频
  • MIPS 每秒执行几百万条指令。 MIPS=指令条数/(执行时间乘106)=主频/(CPI*106)
  • FLOPS:每秒执行多次浮点于运算。
    - MFLOPS每秒执行多少百万次浮点运算。
  1. 基准程序:用于专门进行性能评价的一组程序。对于不同的应用场合,应该选择不同的基准程序。
    系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号计算机组成的一个产品系列。
    兼容:指软件或硬件的通用性,即运行在某个型号的计算机系统中软硬件也能应用于另一个型号的计算机系统时,称为存在兼容性。
    固件:将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件。

3.2 小结★★★

  • RAM(Random Access Memory,随机存取存储器)是易失性主存储器,ROM(Read-Only Memory,只读存储器)是非易失性只读存储技术,二者都以硬件芯片形式实现,但功能和特性不同。
  • CPU主频指的是CPU使用的时钟频率CPI是执行一条指令平均使用的CPU时钟周期数
  • 机器字长、存储字长和指令字长,三者数值上可以相等也可以不等,根据不同机器而定。机器字长=CPU内部运算器(ALU)位数=通用寄存器宽度。一个存储单元中的位数称为存储字长=MDR的位数。指令字长取决于指令的功能和格式,可以是单字长也可以是半字长或者双字长。
  • MFLOPS是指的是每秒执行多少百万次浮点运算,该参数用于描述计算机的浮点运算性能,而用于科学计算的计算机主要评估浮点运算的性能。
  • CPI是执行一条指令所需要的时钟周期数,系统结构、指令集、计算机组织都会影响CPI,而时钟频率不会影响CPI,但可以加快指令的执行速度。
  • MAR长度=PC长度

4. 小结

小结部分不定时更新,有新的认知或者收获都会回来补充。

  • 冯诺依曼的5个特点
    1.采用存储程序的功能设计。
    2.计算机硬件系统主要由 运算器 存储器 控制器 输入设备 输出设备5大功能组成。
    3.数据和指令都是以二进制形式存储。
    4.指令和数据以同等地位存储在存储器中,形式上没有任何区别,计算机能够识别他们。
    5.指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作的地址。
  • 翻译过程的四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。
  • CPU执行时间计算公式=CPU时钟周期数/主频=(指令条数*CPI)/主频
  • CPU时钟周期=1/主频
  • CPU执行时间公式= CPU时钟周期数×CPU时钟周期=CPU时钟周期×CPI×指令条数。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青北念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值