计算机组成原理
发布网友
发布时间:2022-04-20 06:35
我来回答
共3个回答
懂视网
时间:2022-05-03 04:38
,
2、太浪费硬盘的吞吐量了。那怎么办呢?
我们可以试试给这个CSV文件加一个索引。比如,给数据的行号加一个索引。如果你学过数据库原理或者算法和数据结构,那你应该知道,通过B+树多半是可以来建立这样一个索引的。
1、索引里面没有一整行的数据,只有一个映射关系,这个映射关系可以让行号直接从硬盘的某个位置去读。
2、所以,索引比起数据小很多。我们可以把索引加载到内存里面。
3、即使不在内存里面,要找数据的时候快速遍历一下整个索引,也不需要读太多的数据。
加了索引之后,我们要读取特定的数据,就不用去扫描整个数据表文件了。直接从特定的硬盘位置,就可以读到想要的行。索引不仅可以索引行号,还可以索引某个字段。
我们可以创建很多个不同的独立的索引。写SQL的时候,where语句后面的查询条件可以用到这些索引。
不过,这样的话,写入数据的时候就会麻烦一些。我们不仅要在数据表里面写入数据,对于所有的索引也都需要进行更新。这个时候,写一条条数据就要触发好几个随机写入的更新。
在这样一个数据模型下,查询操作很灵活。无论是根据哪个字段查询,只要有索引,我们就可以通过一次随机读,很快地读到对应的数据。但是,这个灵活性也带来了一个很大的问题,
3、加索引后查询操作很灵活、但是无论干点什么都有大量的随机读写请求
那就是无论干点什么,都有大量的随机读写请求。而随机读写请求,如果请求最终是要落到硬盘上,特别是HDD硬盘的话,我们就很难做到高并发了。毕竟HDD硬盘只有100左右的QPS。
而这个随时添加索引,可以根据任意字段进行查询,这样表现出的灵活性,又是我们的DMP系统里面不太需要的。DMP的KV数据库主要的应用场景,是根据主键的随机查询,
不需要根据其他字段进行筛选查询。数据管道的需求,则只需要不断追加写入和顺序读取就好了。即使进行数据分析的数据仓库,通常也不是根据字段进行数据筛选,而是全量扫描数据进行分析汇总。
后面的两个场景还好说,大不了我们让程序去扫描全表或者追加写入。但是,在KV数据库这个需求上,刚才这个最简单的关系型数据库的设计,就会面临大量的随机写入和随机读取的挑战。
所以,在实际的大型系统中,大家都会使用专门的分布式KV数据库,来满足这个需求。那么下面,我们就一起来看一看,Facebook开源的Cassandra的数据存储和读写是怎么做的,
这些设计是怎么解决高并发的随机读写问题的。
三、Cassandra:顺序写和随机读
1、Cassandra的数据模型
作为一个分布式的KV数据库,Cassandra的键一般被称为Row Key。其实就是一个16到36个字节的字符串。每一个Row Key对应的值其实是一个哈希表,里面可以用键值对,再存入很多你需要的数据。
Cassandra本身不像关系型数据库那样,有严格的Schema,在数据库创建的一开始就定义好了有哪些列(Column)。但是,它设计了一个叫作列族(Column Family)的概念,我们需要把经常放在一起使用的
字段,放在同一个列族列族。比如,DMP里面的人口属性信息,我们可以把它当成是一个列族。用户的兴趣信息,可以是另外一个列族。这样,既保持了不需要严格的Schema这样的灵活性,也保留了
可以把常常起使用的数据存放在一起的空间局部性。
往Cassandra的里面读写数据,其实特别简单,就好像是在一个巨大的分布式的哈希表里面写数据。我们指定一个Row Key,然后插入或者更新这个Row Key的数据就好了。
2、Cassandra的写操作
Cassandra解决随机写入数据的解决方案,简单来说,就叫作“不随机写,只顺序写”。对于Cassandra数据库的写操作,通常包含两个动作。第一个是往磁盘上写入一条提交日志(Commit Log)。另一个操作
则是直接在内存的数据结构上去更新数据。后面这个往内存的数据结构里面的数据更新,只有在提交日志写成功之后才会进入。每台机器上,都有一个可靠的硬盘可以让我们去写入提交日志。写入提交日志都是顺序
写(Sequential Write),而不是随机写(Random Write),这使得我们最大化了写入的吞吐量。
如果你不明白这是为什么,可以回到第47讲,看看硬盘的性能评测。无论是HDD硬盘还是SSD硬盘,顺序写入都比随机写入要快得多。
内存的空间比较有限,一旦内存里面的数据量或者条母超过一定的限额,Cassandra就会把内存里面的数据结构dump到硬盘上。这个Dump的操作,也是顺序写而不是随机写,所以性能也不会是一个问题。除了
Dump的数据结构文件,Cassandra还会根据row key来生成一个索引文件,方便后续基于索引来进行快速查询。
随着硬盘上的Dump出来的文件越来越多,Cassandra会在后台进行文件的对比合并。在很多别的KV数据库系统里面,也有类似这种的合并动作,比如AeroSpike或者Google的BigTable。这些操作我们一般称之为
Compaction。合并动作同样是顺序读取多个文件,在内存里面合并完成,再Dump出来一个新的文件。整个操作过程中,在硬盘层面仍然是顺序读写。
3、Cassandra的读操作
当我们要从Cassandra读数据的时候,会从内存里面找数据,再从硬盘读数据,然后把两部分的数据合并成最终结果。这些硬盘上的文件,在内存里面会有对应的Cache,只有在Cache里面找不到,我们才会去请求
硬盘里面的数据。
如果不得不访问硬盘,因为硬盘里面可能Dump了很多个不同时间点的内存数据的快照。所以,找数据的时候,我们也是按照时间从新的往旧的里面找。
这也就带来另外一个问题,我们可能要查询很多个Dump文件,才能找到我们想要的数据。所以,Cassandra在这一点上又做了一个优化。那就是,它会为每一个Dump的文件里面所有Row Key生成一个
BloomFilter,然后把这个BloomFilter放在内存里面。这样,如果想要查询的Row Key在数据文件里面不存在,那么99%以上的情况下,它会被BloomFilter过滤掉,而不需要访问硬盘。
这样,只有当数据在内存里面没有,并且在硬盘的某个特定文件上的时候,才会触发一次对于硬盘的读请求。
四、SSD:DBA们的大救星
Cassandra是Facebook在2008年开源的。那个时候,SSD硬盘还没有那么普及。可以看到,它的读写设计充分考虑了硬件本身的特性。在写入数据进行持久化上,Cassandra没有任何的随机写请求,无论是
Commit Log还是Dump,全部都是顺序写。
1、Cassandra在数据读的请求上做的优化
在数据读的请求上,最新写入的数据都会更新到内存。如果要读取这些数据,会优先从内存读到。这相当于是一个使用了LRU的缓存机制。只有在万般无奈的情况下,才会有对于硬盘的随机读请求。即使在这样的情
况下,Cassandra也在文件之前加了一层BloomFilter,把本来因为Dump文件带来的需要多次读硬盘的问题,简化成多次内存读和一次硬盘读。
这些设计,使得Cassandra即使是在HDD硬盘上,也能有不错的访问性能。因为所有的写入都是顺序写或者写入到内存,所以,写入可以做到高并发。HDD硬盘的吞吐率还是很不错的,每秒可以写入100MB以上的
数据,如果一条数据只有1KB,那么10万的WPS(Writes per seconds)也是能够做到的。这足够支撑我们DMP期望的写入压力了。
而对于数据的读,就有一些挑战了。如果数据读请求有很强的局部性,那我们的内存就能搞定DMP需要的访问量。
2、问题就出在这个局部性上
但是,问题就出在这个局部性上。DMP的数据访问分布,其实是缺少局部性的。你仔细想一想DMP的应用场景就明白了。DMP里面的Row Key都是用户的唯一标识符。普通用户的上网时长怎么会有局部性呢?每个
人上网的时间和访问网页的次数就那么多。上网多的人,一天最多也就24小时。大部分用户一天也要上网2?3小时。我们没办法说,把这些用户的数据放在内存里面,那些用户不放。
那么,我们可不可能有?定的时间局部性呢?如果是Facebook那样的全球社交?络,那可能还有?定的时间局部性。毕竟不同国家的用的时区不一样。我们可以说,在印度人民的一天,把印度人民的数据加载到内
存里面,美国人民的数据就放在硬盘上。到了印度人民的晚上,再把美国人民的数据换到内存里面来。如果你的主要业务是在国内,那这个时间局部性就没有了。大家的上网高峰时段,都是在早上上班路上、中
午休息的时候以及晚上下班之后的时间,没有什么区分度。
面临这个情况,如果你们的CEO或者CTO问你,是不是可以通过优化程序来解决这个问题?如果你没有仔细从数据分布和原理的层面思考这个问题,而直接一下答应下来,那你可能之后要头疼了,因为这个问题很有
可能是搞不定的。
因为缺少了时间局部性,我们内存的缓存能够起到的作用就很小了,大部分请求最终还是要落到HDD硬盘的随机读上。但是,HDD硬盘的随机读的性能太差了,我们在第45讲看过,也就是100QPS左右。而如果全都
放内存,那就太贵了,成本在HDD硬盘100倍以上。
3、2010年SSD硬盘的大规模商用解决了局部性问题
不过,幸运的是,从2010年开始,SSD硬盘的大规模商用帮助我们解决了这个问题。它的价格在HDD硬盘的10倍,但是随机读的访问能力在HDD硬盘的百倍以上。也就是说,用上了SSD硬盘,我们可以用1/10的成
本获得和HDD硬盘同样的QPS。同样的价格的SSD硬盘,容量则是内存的10倍,也能够满足我们的需求,比较低的成本存下整个互联网络信息。
不夸张地说,过去几年的“大数据”“高并发”“千人千面”,有一半的功劳应该归在让SSD容量不断上升、价格不断下降的硬盘产业上。回到我们看到的Cassandra的读写设计,你会发现,Cassandra的写入机制完美匹配了我们在第46和47讲所说的SSD硬盘的优缺点。
在数据写入层面,Cassandra的数据写入都是Commit Log的顺序写入,也就是不断地在硬盘上往后追加内容,而不是去修改现有的文件内容。一旦内存里面的数据超过一定的阈值,Cassandra就会完整地Dump一
个新文件到文件系统上。这同样是一个追加写入。
数据的对等和紧凑化(Compaction),同样是读取现有的多个文件,然后写一个新的文件出来。写入操作只追加不修改的特性,正好天然地符合SSD硬盘只能按块进行擦除写入的操作。在这样的写入模式下,
Cassandra用到的SSD硬盘,不需要频繁地进行后台的Compaction,能够最大化SSD硬盘的使用寿命。这也是为什么,Cassandra在SSD硬盘普及之后,能够获得进一步快速发展。
五、延伸总结
好了,关于DMP和存储器的内容,讲到这里就差不多了。希望今天的这一讲,能够让你从Cassandra的数据库实现的细节层面,彻底理解怎么运用好存储器的性能特性和原理。
传统的关系型数据库,我们把一条条数据存放在一个地方,同时再把索引存放在另外一个地放。这样的存储方式,其实很方便我们进行单次的随机读和随机写,数据的存储也可以很紧凑。但是问题也在于此,大部分的SQL请求,都会带来大量的随机读写的请求。这使得传统的关系型数据库,其实并不适合用在真的高并发的场景下。
我们的DMP需要的访问场景,其实没有复杂的索引需求,但是会有比较高的并发性。我带你一看了Facebook开源的Cassandra这个分布式KV数据库的读写设计。通过在追加写入Commit Log和更新内存,
Cassandra避开了随机写的问题。内存数据的Dump和后台的对比合并,同样也都避开了随机写的问题,使得Cassandra的并发写入性能极高。
在数据读取层面,通过内存缓存和BloomFilter,Cassandra已经尽可能地减少了需要随机读取硬盘里面数据的情况。不过挑战在于,DMP系统的局部性不强,使得我们最终的随机读的请求还是要到硬盘上。幸运
的是,SSD硬盘在数据海量增长的那几年里价格不断下降,使得我们最终通过SSD硬盘解决了这个问题。而SSD硬盘本身的擦除后才能写入的机制,正好非常适合Cassandra的数据读写模式,最终使得Cassandra
在SSD硬盘普及之后得到了更大的发展。
深入浅出计算机组成原理:设计?型DMP系统(下)-SSD拯救了所有的DBA(第53讲)
标签:mongodb 网页 bsp 先来 完成 mil 机器 今天 实现
热心网友
时间:2022-05-03 02:02
计算机组成原理
三、名词解释
1.计算机系统:由硬件和软件两大部分组成,有多种层次结构。
2.主机:CPU、存储器和输入输出接口合起来构成计算机的主机。
3.主存:用于存放正在访问的信息
4.辅存:用于存放暂时不用的信息。
5.高速缓存:用于存放正在访问信息的付本。
6.*处理器:是计算机的核心部件,由运算器和控制器构成。
7.硬件:是指计算机实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成。
软件:指看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。
8.系统软件:又称系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。
应用软件:又称应用程序,它是用户根据任务需要所编制的各种程序。
9.源程序:通常由用户用各种编程语言编写的程序。
目的程序:由计算机将其翻译机器能识别的机器语言程序。
10.总线:是连接多个部件的信息传输线,是各部件共享的传输介质。
11.系统总线:是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。
通信总线:是指用于计算机系统之间或者计算机系统与其他系统(如控制仪表、移动通信)之间的通信的线路。
按传送方式分并行和串行。串行通信是指数据在单条1位宽的传输线上,一位一位的按顺序分时传送。并行通信是指数据在多条并行1位宽的传输线上,同时由源传送到目的地。
12.带宽:单位时间内可以传送的最大的信息量。
13.机器字长:是指CPU一次并行处理数据的位数,通常与CPU的寄存器位数有关。
14.主存容量:是指主存中存放二进制代码的总位数。
15.机器数:符号位数字化,0代表正数,1代表负数。
16.定点数:小数点固定在某一位位置的数。
17.浮点数:小数点的位置可以浮动的数。
18.补码:带符号数据表示方法之一,正数的反码和原码相同,负数的反码是将二进制按位取反后在最低位再加1.
19.溢出:在计算机中,超出机器字长,发生错误的结果。
20.非编码键盘:采用软件判断键是否按下及设键、译键、计算键值的方法的键盘。
21.A/D转换器:它能将模拟量转换成数字量,是计算机的输入设备。
22.I/O接口:指主机与I/O设备之间设置的一个硬件电路及器相应的软件控制。
23.端口:指接口电路中的一些寄存器,用来存放数据信息、控制信息和状态信息。
24.中断:计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行转向对这些异常情况或特殊请求处理,处理结束后再返回到现行程序的间断处,继续执行源程序。
25.中断源:凡能向CPU提出中断请求的各种因素统称为中断源。
26.中断嵌套:计算机在处理中断的过程中,有可能出现新的中断请求,此时CPU暂停现行中断服务程序,转向新的中断请求,这种现象称为中断嵌套。
27.优先级:为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别。
28.DMA方式:用硬件在主存与外设之间直接进行数据传送,不须CPU,用软件控制。
29.指令系统:将全部机器指令的集合称为机器的指令系统。
30.寻址方式:是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。
31.指令周期:完成一条指令的时间,由若干机器周期组成。
机器周期:完成摸个独立操作,由若干时钟周期组成。
时钟周期:最基本时间单位,由主频决定。
32.微操作:在微程序控制器中,执行部件接受微指令后所进行的最基本的操作。
33.微指令:控制器存储的控制代码,分为操作控制部分和顺序控制部分,由微命令组成。
34.微程序:存储在控制存储器中的完成指令功能的程序,由微指令组成。
35.控制存储器:CPU内用于存放实现指令系统全部指令的微程序的只读存储器。
二、计算
3.14. 设总线的时钟频率为8MHZ,一个总线周期等于一个时钟周期。如果一个总线周期中并行传送16位数据,试问总线的带宽是多少?
解:由于:f=8MHz,T=1/f=1/8M秒,因为一个总线周期等于一个时钟周期
所以:总线带宽=16/(1/8M) = 128Mbps=16MBps
3.15. 在一个32位的总线系统中,总线的时钟频率为66MHZ,假设总线最短传输周期为4个时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施?
解:总线传输周期=4*1/66M秒
总线的最大数据传输率=32/(4/66M)=528Mbps=66MBps
若想提高数据传输率,可以提高总线时钟频率、增大总线宽度或者减少总线传输周期包含的时钟周期个数。
3.16. 在异步串行传送系统中,字符格式为:1个起始位、8个数据位、1个校验位、2个终止位。若要求每秒传送120个字符,试求传送的波特率和比特率。
解:一帧包含:1+8+1+2=12位
故波特率为:(1+8+1+2)*120=1440bps
比特率为:8*120=960bps
4.5. 什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?
解:存储器的带宽指单位时间内从存储器进出信息的最大数量。
存储器带宽 = 1/200ns ×32位 = 160M位/秒 = 20MB/秒(注:1ns=10-9s)
4.7. 一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?
1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位
解:地址线和数据线的总和 = 14 + 32 = 46根;
选择不同的芯片时,各需要的片数为:
1K×4:(16K×32) / (1K×4) = 16×8 = 128片
2K×8:(16K×32) / (2K×8) = 8×4 = 32片
4K×4:(16K×32) / (4K×4) = 4×8 = 32片
16K×1:(16K×32)/ (16K×1) = 1×32 = 32片
4K×8:(16K×32)/ (4K×8) = 4×4 = 16片
8K×8:(16K×32) / (8K×8) = 2×4 = 8片
6.4. 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,-87
解:真值与不同机器码对应关系如下:
真值-13/64-87
原码1.001 10101,101 0111
补码1.11001101,0101001
反码1.11001011,0101000
6.5. 已知[x]补,求[x]原和x。
[x1]补=1.1100; [x2]补=1.1001; [x4]补=1.0000;
[x5]补=1,0101; [x6]补=1,1100; [x8]补=1,0000;
解:[x]补与[x]原、x的对应关系如下:
真值-1/4-7/16-1-11-4-16
[x]补1.11001.10011.00001,01011,11001,0000
[x]原1.01001.0111无1,10111,0100无
x-0.0100-0.0111-1.0000-1011-0100-10000
6.9. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)?
解:真值和机器数的对应关系如下:
原码补码移码无符号数
9BH-27-101+27155
原码补码移码无符号数
FFH-128-1+128256
6.12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出-27/1024、-86.5所对应的机器数。要求如下:
(1)阶码和尾数均为原码。
(2)阶码和尾数均为补码。
(3)阶码为移码,尾数为补码。
解:据题意画出该浮点数的格式:
阶符1位阶码4位数符1位尾数10位
将十进制数转换为二进制: x1= -27/1024= -0.0000011011B = 2-5*(-0.11011B)
x3=-86.5=-1010110.1B=27*(-0.10101101B)
则以上各数的浮点规格化数为:
(1)[x1]原=1,0101;1.110 110 000 0
[x3]原=0,0111;1.101 011 010 0
(2)[x1]补=1,1011;1.001 010 000 0
[x3]补=0,0111;1.010 100 110 0
(3)[x1]移补=0,1011;1.001 010 000 0
[x3]移补=1,0111;1.010 100 110 0
6.19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。
(2)A=19/32,B=-17/128,求A-B。
(4)A=-87,B=53,求A-B。
解:(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B
[A]补=00.100 1100, [B]补=11.110 1111 , [-B]补=00.001 0001
[A-B]补=[A]补+[-B]补
=00.1001100 + 00.0010001
=00.1011101 ——无溢出
A-B= 0.101 1101B = 93/128B
(4)A= -87= -101 0111B, B=53=110 101B
[A]补=11, 010 1001, [B]补=00, 011 0101, [-B]补=11, 100 1011
[A-B]补=[A]补+[-B]补
= 11,0101001 + 11,1001011
= 10,1110100 —— 溢出
6.21. 用原码加减交替法和补码加减交替法计算x÷y。
(2)x=-0.10101, y=0.11011;
(4)x=13/32, y= -27/32。
(2)[x]原=1.10101 x*=0.10101 [X*]补=1.01011 XfYf=1
0.10101
+1.00101
1.110100
1.10100
+0.11011
0.011110
0.11110
+1.00101
0.00011011
0.00110
+1.00101
1.010110110
0.10110
+0.11011
1.1000101100
1.00010
+0.11011
1.11101011000
[y]原=0.11011 y*=0.11011 [Y*]补=0.11011 [-y*]补=1.00101
[x/y]原=1.11000
(4)做法相同,打表格太累,仅给出结果。[x/y]原=1.01111
三、应用
4.14. 某8位微型机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:
(1)该机所允许的最大主存空间是多少?
(2)若每个模块板为32K×8位,共需几个模块板?
(3)每个模块板内共有几片RAM芯片?
(4)共有多少片RAM?
(5)CPU如何选择各模块板?
解:(1)该机所允许的最大主存空间是:218 × 8位 = 256K×8位 = 256KB
(2)模块板总数 = 256K×8 / 32K×8 = 8块
(3)板内片数 = 32K×8位 / 4K×4位 = 8×2 = 16片
(4)总片数 = 16片×8 = 128片
(5)CPU通过最高3位地址译码输出选择模板,次高3位地址译码输出选择芯片。地址格式分配如下:
4.29. 假设CPU执行某段程序时共访问Cache命中4800次,访问主存200次,已知Cache的存取周期为30ns,主存的存取周期为150ns,求Cache的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少倍?
解:Cache被访问命中率为:4800/(4800+200)=24/25=96%
则Cache-主存系统的平均访问时间为:ta=0.96*30ns+(1-0.96)*150ns=34.8ns
Cache-主存系统的访问效率为:e=tc/ta*100%=30/34.8*100%=86.2%
性能为原来的150ns/34.8ns=4.31倍,即提高了3.31倍。
例7.2设相对寻址的转移指令占3个字节,第一字节为操作码,第二,三字节为相对位移量(补码表示)。而且数据在存储器中采用以低字节地址为字地址的存放方式。每当CPU从存储器取出一个字节时,即自动完成(PC)+1 PC。
(1)若PC当前值为240(十进制),要求转移到290(十进制),则转移指令的第二、三字节的机器代码是什么?
(2)若PC当前值为240(十进制),要求转移到200(十进制),则转移指令的第二、三字节的机器代码是什么?
解:(1)PC当前值为240,该指令取出后PC值为243,要求转移到290,即相对位移量为290-243=47,转换成补码为2FH。由于数据在存储器中采用以低字节地址为字地址的存放方式,故该转移指令的第二字节为2FH,第三字节为00H。
(2)PC当前值为240,该指令取出后PC值为243,要求转移到200,即相对位移量为200-243=-43,转换成补码为D5H。由于数据在存储器中采用以低字节地址为字地址的存放方式,故该转移指令的第二字节为D5H,第三字节为FFH。
例7.3一条双字长直接寻址的子程序调用指令,其第一个字为操作码喝寻址特征,第二个字为地址码5000H。假设PC当前值为2000H,SP的内容为0100H,栈顶内容为2746H,存储器按字节编址,而且进栈操作时执行(SP)-△-P,后存入数据。试回答下列几种情况下,PC、SP及栈顶内容各为多少?
(1)CALL指令被读取前。
(2)CALL指令被执行后。
(3)子程序返回后。
解CALL指令被读取前,PC=2000H,SP=0100H,栈顶内容为2746H。
(1)CALL指令被执行后,犹豫存储器按字节编制,CALL指令供占4个字节,故程序断电2004H进栈,此时SP=(SP)-2=00FEH,栈顶内容为2004H,PC被更新为子程序入口地址5000H。
(2)子程序返回后,程序断点出栈,PC=2004H,SP被修改为0100H,栈顶内容为2746H。
7.6某指令系统字长为16位,地址码取4位,试提出一种方案,使该地址系统有8条三地址指令、16条二地址指令、100条一地址指令。
解:
OPA2A1A0三地址指令8条
0000
•
•
•
0111
OPA1A0二地址指令16条
10000000
•
•
•
10001111
OPA0一地址指令100条
110000000000
110001100011
7.7设指令字长为16位,采用扩展操作码技术,每个操作码的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令。
解:(24-3)*26=3*64=192条
7.8某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址,一地址和二地址三种格式,若零地址指令有M种,以抵制指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?
解:1)若采用定长操作码时,二地址指令格式如下:
OP(4位)A1(6位)A2(6位)
设二地址指令有K种,则:K=24-M-N
当M=1(最小值),N=1(最小值)时,二地址指令最多有:Kmax=16-1-1=14种
2)若采用变长操作码时,二地址指令格式仍如1)所示,但操作码长度可随地址码的个数而变。此时,K= 24 -(N/26 + M/212 );
当(N/26 + M/212 )1时(N/26 + M/212 向上取整),K最大,则二地址指令最多有:
Kmax=16-1=15种(只留一种编码作扩展标志用。)
9.5设机器A的CPU主频为8MHz,机器周期为4个时钟周期,且该机的平均指令执行速度是0.4MIPS,试求该机的平均指令周期和机器周期,每个指令周期中含几个机器周期?如果机器B的CPU主频为12MHz,且机器周期也含有4个时钟周期,试问B机的平均指令执行速度为多少MIPS?
A.CLK=8MHz T=1/8MHz=0.125us
机器周期=4*T=0.5us
因为执行速度为0.4MIPS 所以平均指令周期=1/0.4MIPS=2.5us
2.5us/0.5us=5个 所以每个指令含有5条机器指令
B.T=1/f=1/12MHz=1/12us 机器指令=4*T=1/3us 指令周期=5*1/3=5/3us
平均指令执行速度 1/(5/3)=0.6MIPS
9.6设某计算机的CPU主频为8MHz,每个机器周期平均含2个时钟周期,每条指令平均有4个机器周期,试问该计算机的平均指令执行速度为多少MIPS?若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令平均有4个机器周期,试问B机的平均指令执行速度为多少MIPS?
1.CLK=8MHz 平均指令执行速度1/(1/8M*2*4)=1MIPS
2.指令周期=4*4*1/8=2us 执行速度=1/(1/8M*4*4)=0.5MIPS
9.7某CPU的主频为10MHz,若已知每个机器周期平均含有4个时钟周期,该机的平均指令执行速度为1MIPS,试求该机的平均指令执行速度为多少MIPS?若CUP主频不变,但每个机器周期平均含有4个时钟周期,每条指令平均有4个机器周期,则该机的平均指令执行速度又是多少MIPS?由此可得出什么结论
1.平均指令周期=1/1MIPS=1us T=1/f=0.1us T机=4*T=0.4us
因为1us/0.4us=2.5 所以每个指令包含2.5个机器周期
2.T=0.4us 速度=1/(0.4*2.5*4)=0.25MIPS
3.因为速度=0.8MIPS 所以T指=1/0.8us
因为T指=4*2.5*T 所以T=1/8us 所以 f=1/T=8MHz
四、简答
1.冯诺依曼机主机主要特点。
○1计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。
○2.指令和数据一同等地位存放于存储器内,并可按地址寻访。
○3.指令和数据均用二进制表示。
○4.指令由操作吗和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
○5.采用存储控制原理,指令在存储器内按顺序存放。通常指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
○6.机器以运算器为中心,输入输出设备与存储器间的数据传说通过运算器完成。
2.计算机硬件主要技术指标,软件定义与分类。
计算机硬件主要技术指标:机器字长、存储容量、运算速度、主频等。
软件定义:看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。
分类:系统软件和应用软件。
3.计算机组成部分与个部分作用。
运算器:用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
存储器:用来存放数据和程序。
控制器:用来控制、指挥程序和数据的输入、运行以及处理器运算结果。
输入设备:用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
输出设备:可将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等。
4.总线定义与分类方法,系统总线定义与分类方法。
总线
定义:总线是连接多个部件的信息传输线,是各部件共享的传输介质。
分类:片内总线 系统总线 通信总线
系统总线
定义:系统总线是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。
分类: 数据总线 地址总线 控制总线
5.什么是总线标准,目前流行的总线标准有哪些。
所谓总线标准可视为系统与各模块,模块与模块之间的一个互连的标准界面。
ISA总线、EISA总线、PCI总线、RS—232C总线、IEEE-488(并行通信总线又称GP-IP总线)USB总线。
6.*存储器系统中各级存储器特点与用途,分哪两个层次。
○1主存 特点:随机访问、速度快。容量大。用途:存放CPU使用的程序和数据。
辅存 特点:容量大、速度慢、价格低、可脱机保存信息。用途:存放大量后备数据
缓存 特点:速度快、容量小、价格高 用途:用于主存与辅存之间作为缓冲,正在使用的程序和数据的付本。
○2缓存-----主存层次和主存---辅村层次。
7.半导体存储器RAM与ROM特点与用途。
RAM特点:可读可写掉电后信息丢失,存临时信息。用途:主要做内存
ROM特点:只读不写掉电后信息不丢失,存长期信息。用途:主要做控制存储器
8.动态RAM与静态RAM特点与用途,DRAM刷新方式与主要优点。
静态RAM特点:信息读出后,仍保持其原有状态,不需要再生。用途:用于Cache
动态RAM特点:靠电容存储电荷的原理来寄存信息。用途:组成内存/主存。
DRAM刷新方式
集中刷新:集中刷新是在规定的一个刷新周期内对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读写操作。
分散刷新:分散刷新是指对每行存储单元的刷新分散到每个存储周期内完成。
异步刷新:异步刷新是前两种方式的结合,它即可缩短“死时间”,又充分利用最大刷新间隔2ms的特点。
优点:单个MOS管组成,集成度高,速度较SRAM慢,价格低,
9.Cache工作原理特点,地址映射方式与替换算法。
原理:利用程序访问的局部性,近期用到信息存于cache。
地址映射方式:直接映射、全相联映射、组相联映射、
替换算法:先进先出算法(FIFO)、近期最少使用算法(LRU)、随机法。
10.主机与外设交换信息采用中断与DMA方式特点与应用场合。
中断方式:
特点:CPU与外设并行工作,效率高
应用场合:管理多种外设并行工作、进行实时处理、进行故障自动处理
DMA方式:
特点:
○1从数据传送看,程序中断方式靠程序传送,DMA方式靠硬件传送。
○2从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应。
○3程序中断方式有处理异常事件能力,DMA方式没有这种能力,主要用于大批数据的传送,如硬盘存取、图像处理、高速数据采集系统等,可提高数据吞吐量。
○4程序中断方式需要中断现行程序,故需保护现场;DMA方式不中断现行程序,无须保护现场。
○5DMA的优先级比程序中断的优先级高。
应用场合:高速设备 如硬盘
11.I/O端口与接口的区别,I/O接口分类方法。
端口:接口内部寄存器有I/O地址号。一般分为数据口、命令口和状态口。
接口:若干端口加上相应的控制电路组成。
接口分类:按数据传送方式分串行接口和并行接口
按功能选择的灵活性分为可编程接口和不可编程接口
按通用性分为通用接口和专用接口
按数据传送的控制方式分为程序型接口和DMA接口。
12.中断处理过程分成哪两个阶段各完成哪些任务
响应阶段:关中断、保护断点地址、转入中断服务入口地址
处理阶段:保护现场、执行用户编写的中断服务程序、恢复现场。
13.与中断方式比较MDA方式主要特点是什么。
○1从数据传送看,程序中断方式靠程序传送,DMA方式靠硬件传送。
○2从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应。
○3程序中断方式有处理异常事件能力,DMA方式没有这种能力,主要用于大批数据的传送,如硬盘存取、图像处理、高速数据采集系统等,可提高数据吞吐量。
○4程序中断方式需要中断现行程序,故需保护现场;DMA方式不中断现行程序,无须保护现场。
○5DMA的优先级比程序中断的优先级高。
14.什么是寻址方式,数据寻址方式有哪几种。
寻址方式:是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。
数据寻址方式:立即寻址、直接寻址、隐含寻址、间接寻址、寄存器寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址、堆栈寻址。
15.RISC主要特点与CISC相比较RISC主要优点。
特点:
选用使用频率较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现;
指令长度固定指令格式种类少,寻址方式种类少;
只有取数/存数指令访问存储器,其余指令的操作都在寄存器内完成;
采用流水线技术,大部分指令在一个时钟周期内完成;
控制器采用组合逻辑控制,不用微程序控制;
采用优化的编译程序。
○1充分利用VLSI芯片的面积。
○2提高计算机运算速度。
○3便于设计可降低成本提高可靠性。
○4有效支持高级语言程序。
16.组合逻辑与微程序设计主要特点与应用。
组合逻辑:特点:速度快、复杂不灵活。应用:适用于RISC机。
微程序:特点:引入程序设计与存储逻辑技术,硬件软化,把一条机器指令用一段微程序来实现,存放控制存储器CM中。应用:系列机。
17.什么是指令周期、机器周期、时钟周期 三者的关系如何。
指令周期:完成一条指令的时间,由若干机器周期组成。
机器周期:完成摸个独立操作,由若干时钟周期组成。
时钟周期:最基本时间单位,由主频决定。
关系:时钟周期是最基本时间单位,由若干时钟周期组成机器周期,由若干机器周期组成指令周期。
请采纳。追问你能看题?不要乱回答
热心网友
时间:2022-05-03 03:37
1. t顺序=mT=800 ns
q=字长*m=256 b
w顺序=q/t顺序=0.32 b/ns
以上 t为连续读取m个字所需的时间 q为连续读取m个字的信息总量 w为带宽
2. t交叉=T (m-1)*总线传送周期=350 ns
q=字长*m=256 b
w交叉=q/t交叉=0.73 b/ns
(如果你有《计算机组成原理》第五版 白中英主编 这本书,那么书上88页例题5就是这道题)
3. 我不知道怎么解释,反正相对来说,采用顺序方式带宽会受到一定*,采用交叉方式可以大大提高带宽