计算机系统概论

1、冯诺依曼结构计算机工作原理及层次结构分析

1.1 冯诺依曼计算机的工作原理

  • 存储系统:将程序存放在计算机的存储器中(存储系统的快速构建与访问)
  • 程序控制:按指令地址访问存储器并取出指令,经译码器依次产生指令执行所需的控制信号,实现对计算的控制,完成指令的功能 (指令系统、控制器设计)

1.2 冯诺依曼计算机的组成

1.2.1 硬件系统

  • 主机:CPU(运算器+控制器)、内存
  • 外设:输入设备、输出设备、外存储器
  • 总线:地址线、数据线、控制线

运算器

  • 算术运算:加、减、乘、除
  • 逻辑运算:与、或、非
  • 基本结构:ALU(Arithmetic Logical Unit)、寄存器、连接通路

功能与结构的关系:指令、数据类型、性能要求 ...

控制器

  • 基本功能:产生指令执行过程所需要的所有控制信号,控制相关功能部件执行相应的功能
  • 控制信号的方式:电平信号、脉冲信号
  • 产生控制信号的依据:指令、状态、时序
  • 控制信号的产生方式:微程序、硬布线

存储器

  • 功能:存储原程序、原数据、运算中间结果
  • 工作模式: 读、写
  • 工作原理:按地址访问,读/写数据
容量 地址线数量
1K 10
1M 20
1G 30

输入/输出设备

  • 输入设备:向计算机输入数据(键盘、鼠标、网卡、扫描仪等)
  • 输出设备:输出处理结果(显示器、声卡、网卡、打印机等)

1.2.2 软件系统

  • 可运行的思想和内容的数字化
    • 思想:算法、规律、方法--程序表达
    • 内容:图形、图像、数据、声音、文字等被处理的对象
  • 软件的表现形式:程序与数据(以二进制表示的信息)
  • 软件的核心:算法

类型大致分为三种:

  • 系统软件
    • 如操作系统、网络系统和编译系统
  • 支持软件
    • 开发工具、界面工具等
  • 应用软件
    • 字处理软件、游戏软件

1.2.3 硬件与软件的关系

  • 相互依存

  • 逻辑等效性

    某些功能可以由硬件实现、也可由软件实现

  • 协调发展

1.3 计算机的层次结构

基本认识:

  • 不同用户处在不同层次
  • 不同层次具有不同属性
  • 不同层次使用不同工具
  • 不同层次的代码效率不同

概念:

  • 透明性概念

    • 本来存在的事务或属性,从某个角度去看,却好像不存在

    • 如硬件的特性对C语言程序设计者而言就具有透明性

  • 系统观

    • 当硬件结构发生变化时要想到可能对软件产生的影响

    • 不同类型的软件对硬件有不同的要求

    • 编程的CPU硬件相关性,编程应查阅对应CPU的编程手册

  • 软硬件的分界线

    • 在指令集架构层
    • 软、硬件的接口,是指令操作硬件的接口
    • 指令格式及指令的设计与硬件关联

2、计算机系统性能评价

2.1 非时间指标

机器字长:指机器一次能处理的二进制位数

  • 由加法器、寄存器的位数决定

  • 一般与内部寄存器的位数相等(字长)

  • 字长越长,表示数据的范围就越大,精确度越高

  • 目前常见的有32位和64位

总线宽度:数据总线一次能并行传送的最大信息位数

  • 一般指运算器与存储器之间的数据总线位数
  • 有些计算机内部与外部数据总线宽度不一致
  • 8086、80286、80386内外数据总线等宽
  • 8088、80386SX外部总线宽度8位内部总线宽度16位
  • Pentinum外总线64位、内总线32位(两条32位流水线)

主存容量与存储带宽

  • 主存容量
    • 是指一台计算机主存所包含的存储单元总数
  • 存储带宽
    • 指单位时间内与主存交换的二进制信息量,常用单位是B/s(字节/秒)。(影响存储带宽的指标包括数据位宽和数据传输速率)

2.2 时间指标

1)主频f/时钟周期T,外频、倍率

  • 主频f(周期/秒)

    指CPU内核工作的时钟频率,即CPU内数字脉冲信号振荡的速率,与CPU实际的运算能力之间不是唯一的、直接关系

  • 时钟周期T

    也称节拍周期,是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作

  • f与T的关系

    互为倒数,f越高,T就越小(f = 100MHz时T = 10ns,f = 1GHz时T = 1ns)

  • 外频

    指CPU(内存)与主板之间同步的时钟频率

  • 倍频

    CPU主频与外频之间的倍率

主频 = 外频 × 倍频

如:Pentium 4 2.4G CPU主频

24000M = 133M(外频) × 18(倍频)

2)CPI (Clock cycles Per Instruction)

  • 执行一条指令(平均)需要的时钟周期数(即T周期的个数)

  • 单条指令CPI、一段程序所有指令的CPI、指令系统CPI等

CPI = 程序中所有指令的时钟周期之和 / 程序中指令总数

​ = ∑ \sum_{} ∑(程序中各类指令的CPI × 程序中该类指令的比例)

  • IPC (Instruction per Clock)

    每个时钟周期内执行的指令条数(并行)

3)MIPS (Million Instruction Per Second)

  • 每秒钟CPU能执行的指令条数(单位:百万条/秒)

    MIPS = 指令条数 / (执行时间 × 10^6)

    ​ = 指令条数 /(所有指令CPU时钟周期之和 / f × 10^6)

    ​ = f /( CPI × 10^6) (全性能公式)

4)CPU时间

  • 执行一段程序所需的时间

    (CPU时间 + I/O时间 + 存储访问时间 + 各类排队时延等)

    ​ CPU时间 = 程序中所有指令的时钟周期之和 × T

    ​ = 程序中所有指令的时钟周期数之和 / f

  • 考虑CPI后的CPU时间

    CPU时间 = 总指令数 × ∑ i = 1 n \sum_{i=1}^{n} i=1∑n (CPI1 × ICi / 总指令数) × 时钟周期时间

​ = 总指令数 × CPI × T

  • 考虑MIPS后的CPU时间

    MIPS = 指令数量 / 执行指令的时间 × 10^6

    程序的执行时间 t = 指令数量 / MIPS × 10^6

3、计算机性能测试

3.1 目的

  • 全面了解所测试计算机的性能
  • 实时掌握计算机的工作状态
  • 为对比、评估、维护提供依据
  • ......

3.2 基本原理

  • 计算机系统中配置了大量的传感器和寄存器,系统运行的相关参数保存在对应的寄存器中
  • 测试程序通过读取对应寄存器的值获得系统运行的状况
  • 通过图形 / 数据方式显示获取的状态数值

3.3 常见的测试工具

1)CPU测试工具

  • CPUmark

    综合CPU测试,包括系统存储,浮点运算和逻辑运算;

  • SysID

    测试CPU电压,运行频率, L1、L2 Cache以及各项技术资料;

  • Hot CPU Tester

    可测试机器稳定性,尤其是超频后的稳定性,找出CPU的最高超频点或缺陷,还可检测CPU的详细性能指标并给出量化的分数值。包括「复杂矩阵」「排序算法「快速傅立叶变换」 「CPU 缓存」「内存」「硬盘」 及指令集等。另外其CPU/Mem Burn-in )还可以作为新购机时的烤机软件来使用。

2)显卡测试工具

  • 3DMark

    除衡量显卡性能外,已渐渐转变成一款衡量整机性能的软件已发行3Dmark99、3Dmark 11和The new 3DMark等近10个版本;

  • N-Bench2

    重点测试CPU以及系统图形性能;

  • FurMark

    通过皮毛渲染算法来衡量显卡的性能及其稳定性,提供了全屏/窗口、预定分辨率、基于时间或帧的测试、多种多重采样反锯齿、竞赛等多种模式。

3)硬盘测试工具

  • Hard Disk Speed

    硬盘测速软件;

  • Disk Benchmark

    通过对不同大小的数据块对磁盘读/写速度的影响检测硬盘、U盘、存储卡及其它可移动磁盘的读/写入速率;

  • iometer

    可被配置为基准测试程序的磁盘和网络I/O的负载,可测试磁盘和网络控制器的性能、总线带宽和时延等参数;

  • HDD Temperature Pro

    硬盘温度探测软件。

4)内存测试工具

  • CTSPD

    选择主板厂商及型号后可详细测试内存的信息,包括:CAS

    latency (列地址选通时延)、RAS to CAS delay(RAS到CAS的相对延

    迟时间)、RAS precharge Trp (RAS预充电时间)、DIMM内存生产

    商和DIMM编号等信息。

  • Memory Speed

    通过读写不同大小的块状数据来测试内存的性能;

  • Memory Transfer Timing Utility

    通过对源文件和目标文件进行校

    正和非校正复制,测试内存的读、写速率;

5)其他综合测试

相关推荐
无尽的大道3 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
爱吃生蚝的于勒6 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
binishuaio16 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE18 分钟前
【Java SE】StringBuffer
java·开发语言
就是有点傻22 分钟前
WPF中的依赖属性
开发语言·wpf
洋24030 分钟前
C语言常用标准库函数
c语言·开发语言
进击的六角龙32 分钟前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
wrx繁星点点33 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
NoneCoder1 小时前
Java企业级开发系列(1)
java·开发语言·spring·团队开发·开发
苏三有春1 小时前
PyQt5实战——UTF-8编码器功能的实现(六)
开发语言·qt