计算机组成与设计 笔记(一)

好久不见大家,离上一次写博客的时间已经很长了。当然理由也有很多,首当其冲必须是自己本来也比较懒,而且最近也离开了cocos2dx这个引擎,开始捣鼓Android应用开发的东西,Android开发相比cocos2dx这个引擎呢,有经验的人比比皆是,每当我有一些新的心得或者想法,在其他人的博客都已经能够找到,所以我就不献丑了,以免误导大家什么的。


当然,还有重要的原因是也要好好学习嘛。这学期有一门课叫计算机组成与设计,有一个带感的简称叫COD。先说这门课我们用的书是计算机科学丛书:计算机组成与设计:硬件/软件接口(原书第4版)。首先肯定要推荐一下这本书,因为的确是好书,内容讲述得细致而且清晰,作者也是知名大学的教授,而且是RISC和RAID领域上比较权威的人士。感觉计算机组成原理这方面需要补一下的话可以入手这本书了。当然看我一下的内容也可以。


其实我发现在csdn上这种博文还是比较少的。我也权当假期后的复习罢了。(= =所以我就来开坑了)


这本书主要内容是讲述计算机从硬件到软件中间层的接口,主要涉及到指令(instructions),算术逻辑单元(arithmetic logic unit / ALU),中央处理器(CPU),内存层次结构,IO和多核多处理器与集群(最后这一项老师讲得不详细,而且这也是一项比较深入的话题,所以我也不怎么说了),从分章开来,虽说是两者接口,但是还是比较靠近硬件一方


这样既然是序章,惯例来说已经是从介绍讲起


一、程序分层

1.高级语言 把现实抽象的语言,其实就是指C/C++, Java, Python等语言,书中也没有再细分

                    按照我自己的理解,其实可以分为python,php,perl等脚本语言,这种通常是通过解释器进行运行时解析

                    还有半编译语言,在虚拟机上运行,这层包括了Java, Objctive-C和 C#

                    最后还有C/C++这类通过汇编器先转化成汇编语言,再翻译成机器语言的

2.汇编语言 汇编其实就是计算机操作的助记符,通常只能执行加减乘除,逻辑与或非,存储读取这种基本操作。

3.硬件表示 汇编最终会转变成硬件表示,其实就是01串,这种01串能够被硬件读取而识别,然后计算机根据指令执行操作


二、性能

性能问题其实是到现在为止都在热烈讨论的问题,像是淘宝双11和铁道部12306等等,都是关于性能上的问题。不过在这里,我们讨论的是更低层次的问题

从硬件上来说,影响性能可以分成四个方面,我们的分析最终都是归结于硬件层面的

1.算法。算法能够影响操作数,一个优秀的算法可以让每秒内执行的操作指数减少

2.架构。这里讲的是硬件的架构,称为ISA(instruction set architect)。不同的ISA会导致相同程序的不同指令数(因为翻译的方法会不同,就像linux中的gcc和windows中的vc)

3.处理器和内存。这个直接影响执行效率

4.IO系统。

这里并没有说哪个要素是最关键的,这通常取决于实际的应用场所,需要具体的分析问题,找出瓶颈所在的地方,才能更好优化性能


这个章节就差不多了,其实介绍的内容和以后记录的内容差得还是比较多的。介绍的原因主要是通过大家平时接触比较多的高层内容往下延伸,做好铺垫而已

你可能感兴趣的:(计算机组成原理)