首页 > 其他分享 >计算机组成原理 | 第一章 计算机系统概述 习题1

计算机组成原理 | 第一章 计算机系统概述 习题1

时间:2024-10-27 17:47:43浏览次数:1  
标签:计算机系统 计算机 CPI 程序 第一章 指令 20% MIPS 习题

1.3 冯·诺依曼结构计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部件组成?它们各有何作用?(P4-6)

冯·诺依曼结构计算机的主要设计思想是存储程序和程序控制。存储程序就是将解题的步骤编制成程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中,方便执行;而程序控制则是指计算机中的控制器逐条取出存储器中的指令并按顺序执行,控制各功能部件进行相应的操作,完成数据的加工处理。
按照冯·诺依曼的设计思想,计算机的硬件系统包含运算器、控制器、存储器、输入设备和输出设备,它们的作用如下:
(1) 运算器:是一种用于信息加工处理的部件,它对数据进行算术运算和逻辑运算;
(2) 控制器:是整个计算机的指挥中心,它可使计算机各部件协调的工作;
(3) 存储器:存放程序和数据;
(4) 输入设备:是将信息输入计算机的外部设备,它将人们熟悉的信息形式转换成计算机能接收并识别的信息形式;
(5) 输出设备:是将计算机运算结果转换成人们和其他设备能接收和识别的信息形式的设备,如字符、文字、图形、图像、声音等。

1.4 计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用?(P9)

计算机系统的层次结构分为6各抽象层次,分别为逻辑门层、微代码层、指令集架构层、操作系统层、汇编语言层、高级语言层。各层次在计算机系统中作用如下:
逻辑门层:该层是计算机系统最底层的硬件系统,由逻辑门、触发器等逻辑电路组成,它是由逻辑设计者采用布尔代数设计的硬件内核。
微代码层:该层是实际的机器层,该层的用户使用微指令编写微程序,用户所编写的微程序由硬件直接执行,注意只有采用微程序设计的计算机系统才有这一层。
指令集架构层:该层可通过机器语言编写程序实现对计算机硬件的控制,是计算机中软件系统与硬件系统之间的界面和纽带。
操作系统层:该层用于对计算机系统的硬件和软件资源进行统一管理和调度,提高计算机系统的使用效率,方便用户使用计算机。
汇编语言层:该层为用户提供基于助记符表示的汇编语言编程。
高级语言层:面向用户的抽象层次。用户使用与机器无关的高级语言编程,编程过程中不需要知道机器的技术细节,只需掌握高级语言的语法规则、算法和数据结构等就可以编程。高级语言大大降低了学习和使用计算机的难度,便于计算机的应用与推广。

1.5 假定某计算机1和计算机2以不同的方式实现了相同的指令集,该指令集中共有A、B、C、D 4类指令,它们所占的比例分别为40%、20%、15%和25%。计算机1和计算机2的时钟频率分别为600MHz和800MHz,各类指令在两计算机上的CPI如表1.8所示。

表1.8 各类指令在两计算机上的CPI

指令类型 A B C D
CPI1 2 3 4 5
CPI2 2 2 3 4

求两计算机的MIPS各为多少?(P11-12)

计算机1的平均CPI = (2 * 40%) + (3 * 20%) + (4 * 15%) + (5 * 25%) = 3.25
计算机2的平均CPI = (2 * 40%) + (2 * 20%) + (3 * 15%) + (4 * 25%) = 2.65
计算机1的MIPS = f / CPI = 600MHz / 3.25 = 184.62
计算机2的MIPS = f / CPI = 800MHz / 2.65 = 301.89

解析:
CPI指执行每条指令所需要的平均时钟周期数
IPC指每个时钟周期CPU能执行的指令条数,是CPI的倒数
MIPS指每秒执行完成的指令数量,以百万条为单位
MIPS = f / CPI = IPC * f (时钟频率f的单位为MHz)
计算机性能与指令的CPI和主频有直接的关系,主频越高,MIPS值越高;CPI越小,MIPS值越高。

1.6 若某程序编译后生成的目标代码由A、B、C、D 4类指令组成,它们在程序中所占比例分别为40%、20%、15%和25%.已知A、B、C、D四类指令的CPI分别为1、2、2、2。现需要对程序进行编译优化,优化后的程序中A类指令数量减少了一半,而其他指令数量未发生变化。假设运行该程序的计算机CPU主频为500MHz。回答下列各题。

(1)优化前后程序的CPI各为多少?(P11-12)
(2)优化前后程序的MIPS各为多少?(P11-12)
(3)通过上面的计算结果,你能得出什么结论?(P14-15)

(1) 优化前的CPI = (1 * 40%) + (2 * 60%) = 1.6
优化后的CPI = (1 * 25%) + (2 * 75%) = 1.75
(2) 优化前的MIPS = f / CPI = 500MHz / 1.6 = 312.5
优化后的MIPS = f / CPI = 500MHz / 1.75 = 285.71
(3) 通过上面的计算结果,我得出:程序中包含的指令条数的多少不足以评价计算机的性能。虽然程序中A类指令条数减少而其他指令数量不变,但是程序的CPI增加了,MIPS也随之减少了。

解析:
优化后的程序中A类指令数量减少了一半,占比为20%;B、C、D类指令数量未发生变化,占比分别为20%、15%、25%。即A类占比20%,B、C、D类占比60%,合为80%,因此需要重新计算A、B、C、D类在程序中所占比例。
A类:20% / 80% = 25% B、C、D类:60% / 80% = 75%

标签:计算机系统,计算机,CPI,程序,第一章,指令,20%,MIPS,习题
From: https://www.cnblogs.com/whbg/p/18493040

相关文章

  • 习题6.3
    1.代码实现点击查看代码importnumpyasnpimportnetworkxasnximportpylabaspltL=[(1,2,20),(1,5,15),(2,5,25),(2,3,20),(2,4,60),(3,5,18),(3,4,30),(5,4,35),(4,6,15),(4,6,10)]G=nx.Graph()G.add_weighted_edges_from(L)......
  • 第七章习题一
    利用CSS技术,结合表格和列表,制作并美化“翡翠阁”页面<!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title>翡翠阁</title> <styletype="text/css"> .cap{ caption-side:top; } table{ b......
  • 重生之“我打数据结构,真的假的?”--3.栈和队列(无习题)
    栈和队列C语言中的栈和队列总结在C语言中,**栈(Stack)和队列(Queue)**是两种非常重要的数据结构。它们广泛用于各种应用中,比如内存管理、任务调度、表达式求值等。本文将对这两种数据结构进行详细的介绍,并展示如何在C语言中实现它们。1.栈(Stack)栈是一种先进后出(LIFO,LastIn......
  • Stema练习题:十四届蓝桥杯STEMA考试Python真题试卷题解
    来源:十四届蓝桥杯STEMA考试Python真题试卷第一套编程第四题这个程序虽然代码量不大,但综合运用了多种基础算法和数据结构:贪心策略选择窗口、模拟现实过程、线性查找最小值、效率高(时间复杂度为O(N)O(N)O(N))。题目描述:编程实现:某服务大厅同时开放3个窗口为客户办理......
  • 习题6.5
    importnumpyasnpdistances=np.array([[0,2,7,np.inf,np.inf,np.inf],[2,0,4,6,8,np.inf],[7,4,0,1,3,np.inf],[np.inf,6,1,0,1,6],[np.inf,8,3,1,0,3],[n......
  • 习题6.6
    importnumpyasnpmatches=np.array([[0,1,0,1,1,1],#1队[0,0,0,1,1,1],#2队[1,1,0,1,0,0],#3队[0,0,0,0,1,1],#4队[0,0,1,0,0,1],#5队[0,0,1,0,0,0]#6队],dtype=int)......
  • 浙大版《C语言程序设计实验与习题指导(第4版)实验6-6 使用函数验证哥德巴赫猜想
    本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口给定如下intprime(intp);voidGoldbach(intn);其中函数prime当用户传入参数p......
  • 第七章 课后习题
    <!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>翡翠阁</title> <styletype="text/css"> body{ font-family:'Arial',sans-serif; bac......
  • C语言程序设计:现代设计方法习题笔记《chapter5》上篇
    第一题        题目分析:程序判断一个数的位数可以通过循环除以10求余,通过计算第一次与10求余为0的次数计算位数,由此可得示例1代码,另一种思路根据提示,可得示例2代码。代码示例1:#include<stdio.h>intmain(){ printf("Enteranumber:"); intnumber,temp; sc......
  • Java基础第五天(实训学习整理资料(五)练习题)
    目录1、百钱买百鸡2、搬砖问题3、(循环)**求水仙花数。4、完数5、费波那契,兔子数列6、打渔还是晒网1、百钱买百鸡(for循环)*“百钱买百鸡”是我国古代的著名数学题。题目这样描述:5文钱可以买1只公鸡,3文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡......