对于计算机组成原理中的设计思想的认识

  第一次写博客,写的不好或者有错误望各位大神不吝赐教!

  作为一个计算机学院大三学生最近考研复习,把计算机组成原理的课本又翻了出来,细读之下对一些计算机的设计思想有了点小感悟或者说总结,就想写一下。

  首先,说一下这个计算机的存储器,现代计算机都是以存储器为核心,存储能力严重关系到计算机的性能,现代计算机的多级缓存,甚至带有缓存的硬盘都是为了解决性价比问题。按照计算机中记忆部件的读写速度排序最快的是用触发器构成的寄存器,但是由于技术限制以及高昂的价格无法运用于内存和外部存储,再有是由SRAM组成的Cache,速度大概在几十ns,远比DRAM百纳秒快,由于计算机程序的局部性原理是的Cache-主存结构得以建立,部分程序备份到Cache中,使其读写时大概率命中Cache,极大降低了cpu的等待时长,而且因为Cache比较小,即使是现在计算机的三级缓存也就几十MB,成本得以控制。另外虚拟存储器技术也是为了解决容量和价格的矛盾。

  继续说存储器,Cache-主存的地址映射机制中,全相联方式更加的灵活利用率也高,但是由于采用了全部比较的方式,使得电路复杂,成本加大,而且不利于大容量存储器使用,而直接映射方式采用对号入座的方式简单快速,但是利用率低,容易发生抖动。为此,我们结合两者的优点,于是有了组相联映射方式,把几个块组成一个组,相当于一个索引,组之上是可以直接映射方式查找,组内用全相联映射方式,在利用率和复杂性之间找到了平衡点。

  再到操作系统层面上,内存管理的段式、页式、段页式也是同一种思想。

  以上几例均是折中思想的体现,接下来说一下这个并行思想。

  说完存储器再说一下这个加法器,并行加法器的快速进位链技术使得计算速度大幅提升,单重分组跳跃进位链是把数个全加器合为一组进位可以直接产生,组间是串行。可是还是不够快,或者说我们不能一组内加入太多的全加器,因为那样会拖慢组内速度,基于此我们又使用了双重分组跳跃进位链,把小组再划分一次,大组之内同时产生进位,组间串行,这种并行就像一棵树,多个分支。这种思想与Map and Reduce算法如出一辙。

  还有计算机中索引的使用,最常见的就是windows资源管理器的目录树,树的使用使得我们的查找不是盲目的、全局性的,极大加快效率,很简单的体会,我们即使手动查找一个文件(假设文件在D盘,D盘大小50G,有100w个文件),如果知道路径,我们几秒钟就能找到,而如果直接搜文件名,可能需要几分钟甚至更多时间(因为计算机不知道要找的文件路径或者其他信息,只能遍历)。还有,计算机Cache-主存组相联映射的分区方式中,也是使用了索引的思想,划分区、组,组内再遍历。树这种数据结构在计算机中是使用最普遍的数据结构之一了,它让我们可以用有限的条件尽可能的缩小操作范围,最大化利用计算机资源。

  暂时就写这些吧,有错误请大家指正,也欢迎补充,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值