【计算机组成原理】1_绪论

chap1 绪论

1. 国产芯片现状

  • MIPS阵营:龙芯
  • X86阵营(常见于桌面和服务器):兆芯(VIA),海光(AMD)
  • ARM阵营(常见于移动嵌入式、手机平板等):飞腾,海思,展讯,松果
  • RISC-V阵营:阿里平头哥玄铁910

2. 冯·诺伊曼结构计算机

2.1 组成
  • 硬件系统:运行程序的基本组成部分
    • 运算器
    • 控制器:控制信号的产生方式包括微程序和硬布线
    • 存储器
    • 输入输出设备

在这里插入图片描述

  • 软件系统:系统软件和应用软件
2.2 层次结构

在这里插入图片描述

3. 指令集

  指令集向上承载的是整个软件生态,向下则规范了以处理器芯片为代表的整个硬件生态。根据一份指令集规范,设计一款处理器,其上可以运行同样遵循该指令集规范所编写的软件代码。故而,我们在提到指令集的时候,有时候也指的是其背后的整个软硬件生态系统,包括外围芯片、操作系统、编译器和诸多应用软件(浏览器、游戏软件等)。定义一个新指令集本身并不是一件难事,但更重要的是如何能吸引整个业界乃至全世界一起来共同建设生态,这需要一种开放共享的理念作为基底。
  指令集规范(Specification)和处理器实现(Implementation)是两个不同层次的概念:指令集是规范标准,往往用一本书或几张纸来记录描述,而处理器实现是基于指令集规范完成的源代码
  指令集和处理器是不同层次的概念,但都各自有3中知识产权模式

在这里插入图片描述

3.1 指令集评价标准
  • 1.成本:更小的芯片=一个晶圆中有更多可用芯片=每颗芯片的成本更低

  • 2.简洁性

    • 更简洁的ISA=更小的芯片面积
    • 更简洁的ISA=更简单的设计与验证=更小的人力成本
  • 3.性能=程序执行时间

p e r f = t i m e p r o g = i n s t p r o g ∗ c y c l e i n s t ∗ t i m e c y c l e perf=\frac{time}{prog}=\frac{inst}{prog}*\frac{cycle}{inst}*\frac{time}{cycle} perf=progtime=proginstinstcyclecycletime

减小①:编译优化,对应于更好的指令集设计
减小②:体系结构优化
减小③:即增加主频,对电路关键路径优化,后端物理设计优化,依赖于开源EDA工具

  • 4.架构和具体实现的分离:不要让指令集手册的定义约束微架构的实现

  • 5.提升空间:一方面可以添加指令:变长指令集可以一直添加,而定长指令集总有一天会把操作码空间用完;另一方面可以自由地添加指令:目前基本上只有RISC-V可以做到:设计,实现,生产,销售

  • 6.代码大小

    • 嵌入式处理器:更小的代码=更小的存储器=更低的成本
    • 高性能处理器:更小的代码=更高的缓存命中率=更低的功耗&更高的性能
  • 7.易于编程/编译/链接

3.2 RISC-V指令集简介
  • 简单:和商业ISA相比简单得多
  • 干净的设计
    • 没有历史包袱
    • 与微结构设计解耦:反例MIPS指令集的延迟槽设计
  • 模块化:很小的标准基础指令集,很多的标准扩展
  • 为扩展性和定制化而设计
    • 变长的指令编码
    • 为扩展指令集预留了很多操作码空间
  • 稳定
    • 通过可选扩展,而不是新版本来进行增强
    • 属于开放的RISC-V基金会所有,不受一家公司的决定和沉浮所影响

3.计算机系统性能评价

3.1 非时间指标
3.1.1 机器字长
  • 机器一次能够处理的二进制位数
    • 一般与内部寄存器、运算器、数据总线的位数相等
    • 早期计算机字长一般为16位,目前常见的有32位和64位字长
  • 对计算机性能的影响:字长越长,表示数据的范围就越大,精确度越高
3.1.2 主存容量
  • 一台计算机主存所包含的存储单元总数:存储单元数x每个存储单元存储的二进制位数
  • 对计算机系统性能的影响:增加主存容量可以减少程序运行期间访问辅存的次数,从而提高程序执行速度

在这里插入图片描述

3.2 时间指标
3.2.1 主频

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

3.2.2 外频

  是指系统总线的工作频率,CPU与主板之间同步运行的速度

标准外频:66MHz、100MHz、133MHz、200MHz、400MHz

3.2.3 倍频

  是指CPU主频与外频之间的倍数,即主频=外频*倍频

3.2.4 CPI

  是指执行一条指令(平均)需要的时钟周期数

C P I = 一段程序中所有指令的时钟周期数之和 / 指令条数 = Σ ( 程序中各类指令的 C P I ∗ 程序中该类指令的比例 ) \begin{aligned} CPI&=一段程序中所有指令的时钟周期数之和/指令条数 \\ &=\Sigma(程序中各类指令的CPI*程序中该类指令的比例) \end{aligned} CPI=一段程序中所有指令的时钟周期数之和/指令条数=Σ(程序中各类指令的CPI程序中该类指令的比例)

3.2.5 IPC

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

CPU性能=IPC x 频率f

3.2.6 MIPS

  表示每秒钟执行指令的条数(以百万条为单位)

M I P S = 指令条数 执行时间 ∗ 1 0 6 = 指令条数 ( 所有指令 C P U 时钟周期数之和 / f ) ∗ 1 0 6 = f C P I ∗ 1 0 6 \begin{aligned} MIPS&=\frac{指令条数}{执行时间*10^6} \\ &=\frac{指令条数}{(所有指令CPU时钟周期数之和/f)*10^6} \\ &=\frac{f}{CPI*10^6} \end{aligned} MIPS=执行时间106指令条数=(所有指令CPU时钟周期数之和/f)106指令条数=CPI106f

3.2.7 MFLOPS

  表示计算机每秒钟执行浮点操作的次数

3.2.8 CPU时间

执行一段程序所需的时间=CPU时间+I/O时间+存储访问时间+各类排队时延

C P U 时间 = 程序中所有指令的时钟周期数之和 ∗ T = 程序中所有指令的时钟周期数之和 / f = C P I ∗ 指令条数 ∗ T = 指令条数 / ( M I P S ∗ 1 0 6 ) \begin{aligned} CPU时间&=程序中所有指令的时钟周期数之和*T \\ &=程序中所有指令的时钟周期数之和/f \\ &=CPI*指令条数*T \\ &=指令条数/(MIPS*10^6) \end{aligned} CPU时间=程序中所有指令的时钟周期数之和T=程序中所有指令的时钟周期数之和/f=CPI指令条数T=指令条数/(MIPS106)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值