今天看了肖老师的回答。其实我对硬件的了解也不多。做一点点的补充。有的了解。有的画出范围。去相应的系了解情况。
肖老师您好,有一些问题想请教您.我对组成计算机最底层的元器件的工作原理一无所知,为人类制作出如此复杂的计算机而折服,同时也很疑惑,总结了以下一些问题:
1.组成计算机的元器件除了晶体管,继电器等还有哪些?他们都是起什么作用的?
2.为什么一通电计算机就可以工作了呢?电流对哪些元器件起作用才使计算机工作的?
3.计算机识别0和1,在计算机中0和1是通过什么元器件表示的?
4.为什么计算机能处理图像和声音,cpu内部运算器好像只是完成加减乘除吧,怎么处理这些东西的?
5.计算机刚出现时,没有键盘,用机器语言编程,怎样把0和1输入计算机,用的什么器件?
6.内存为什么可以存储呢?
问的问题可能比较幼稚,但我真的想搞明白。这些东西老困扰着我,我是软件工程专业的学生,在学组成原理,数据结构,接口之类的课时老觉得心里没底,糊里糊涂的,我始终觉得自己根本不了解计算机。希望老师能指点一下。谢谢您老师。
===========================
我的回答:
哇哦,这些问题,貌似有点难。
这位同学,这些其实都是《计算机组成原理》里面的知识,应该由你们老师讲的,我觉得首先,你应该去问问你的老师,他收了你的学费的,应该给你讲解清楚。
嗯,感谢你这么看得起我,我试着回答一下,先说明,我的不是书本上的标准答案,考试可别用我的答案啊。另外,估计你是大一的新生,学了计算机的专业,但是还没有基础,建议你这学期好好看看教科书,有些基础知识,教科书是正解。
1、组成计算机的元器件除了晶体管,继电器等还有哪些?他们都是起什么作用的?
嗯,应该说,这个问题过时了,倒退50年,你这么说是正确的,因为那会的计算机刚刚从电子管进步到晶体管,不过,目前都是超大规模集成电路计算,计 算机里面都是集成电路块,CPU,内存,甚至声音处理模块,图形卡上的GPU,都是超大规模集成电路,没有晶体管了。继电器则是第一台真正意义的计算机出 现前的东东,早就不用了。
物理层之物理
简单来说电路就是电路板上的东西。线。电阻。电容。电感。加上各种二极管。三极管。具体怎么用的这个去看电路的东西。微电子,电路专业重点研究这些。我们从来不关注。超出了计算机的研究范围。就是专门搞硬件的人对这个研究的也不多。
2.为什么一通电计算机就可以工作了呢?电流对哪些元器件起作用才使计算机工作的?
通电计算机并不能工作,通电通常是给计算机CPU的某根引脚加上一个高电平,这样从软件读入,这个端口从0变成1,由此引发一个中断信号,而中断跳 转的地址,是BIOS里面写好了的,CPU于是跳到这里开始执行机器码程序,并随之开始启动磁盘,从磁盘上读入OS操作系统,一步步BOOT,最终把整个 操作系统调入内存开始运行,这些是软件的工作。硬件就是保证加电后给出一路中断信号即可。
物理层之编码(表示)
计算机通电不能工作。而是设计计算机的时候赋予了编码的信息而让他工作的。比如第123根线有 000,001,010,011,100,101,110,111八种状态。假设第一个是开机。第二个是重启。第三个是关机。大概就是这样设计实现的。这 个是最基本的。是固定的。还有的是不固定的。可以修改的而组成了诸如ROM和RAM。这个东西计算机组成原理和微机原理里面有。具体的设计实现组成原理里 面有。
宏观来说那个元件都起作用。至于让那个,不让那个CPU里面由门阵列和微处理器完成。
3.计算机识别0和1,在计算机中0和1是通过什么元器件表示的?
0和1都是由电路表示的,这个电路可能是集成块的一根引脚,也可能是一段导线,在计算机里面,大家通常把+5V作为1,0V作为0,这样,一个电 路,要么是1,要么是0,可以表示两种状态,由此引发了二进制的使用,我们在现代计算机里面使用的所有数字,最终在计算机内部都表示为二进制数值,连带 着,16进制也比较流行,因为它是2的整倍数,转换方便。
物理层之应用
0和1在不同的系统中是不同的表示。有的是有和没有表示0和1。有的是通过相位表示。这个需要有个时钟来找出正弦和余弦波。有的是 方波。有的是正波。有的是高电平。有的是低电平。有的是通过频率。有的是幅度。也就是高低电平。这个东西电路和数字逻辑,计算机组成原理,计算机网络里面 都用。
4.为什么计算机能处理图像和声音,cpu内部运算器好像只是完成加减乘除吧,怎么处理这些东西的?
所有的图像和声音,都是“数据”,这和我们做个数组,里面填些数字没有差别,仅仅是我们用户对其使用的定义不同而已,一段数据,我们说,它是音频, 它就是音频,说它是视频,它就是视频,其实数据本身是无属性的,看使用者用什么方式理解它。当然,如果我们把视频数据用音频放,放出来可能是杂音而已,数 据主要看来源,看用途,中间存储和传输,是无属性的。
既然是数据,CPU当然能加减乘除,其实大多数时候,我们的CPU只有一种计算,就是加法,所有的四则运算,都是最终转换成加法运算执行的,当然, 这种转换有时候是硬件执行,Intel系列的CPU是CISC复杂指令集结构,它提供乘法指令,但是,内部转换成加法执行,而诸如PowerPC、Sun 的一些RISC精简指令集CPU,则只提供加法,要求应用程序自己完成这种转换。
当然,有了计算法则,就可以套用公式了,一段数据,如何还原成声音或者图像,是有公式的,这是数学家的事情,不是程序员的事情。而现代计算机,都有音频和视频设备,公式逆运算出来的数据,直接推送到声卡或显卡,即可获得图形显示和声音。
CPU的构成
简单来说CPU是由运算器,控制器和存储组织构成的。第三个书上没说。其实现代计算机的为了加快速度越来越多的内存里面的东西放到了CPU里面。这样速度 可以加快。举个简单的例子。一个市面的CPU频率是2.0GHz而内存的我们用的是DDR2 800的东西。里面的速度不一样。我简单换一下。把内存换为DDR2 1G的条子。如果CPU要运算。从内存的取数据那么过去一个要1/1GHz 的时间*2的次数。而CPU这个时候完成了4次指令了。而实际上在数据通路的过程中数组通路是由总线来完成的。如果总线仲裁不通过。那么CPU需要等待更 多的时间。这样很不好。我们还发展那么快的CPU干什么。对吧。
CPU的功能
CPU里面的算术运算是运算器搞定的。有的是不需要大规模运算的。比如你把一个文件从C盘复制到了E盘。这个就不通过CPU。但是 要通过CPU的控制。CPU使用通道或者DMA来完成从硬盘到内存的读写工作。CPU去干它自己的事情。不然你一个复制粘贴后电脑定住了。完了电脑才好。 呵呵。估计你以为电脑坏了吧~~
说完了CPU的功能。接下来说方式。无论是音频还是视频或者图像交给相应的硬件设备完成。CPU最多通过指令了解到“哦,你原来要这样。去吧!”下面的硬件就开始工作了。这个工作的过程是不经过CPU的直到1.出错了。像CPU报告:“错误解决不了。请指示。”2.“任务完成了。”
5.计算机刚出现时,没有键盘,用机器语言编程,怎样把0和1输入计算机,用的什么器件?
用按钮,一排8个按钮,按下表示1,不按表示0,把一个字节的数据,以8位二进制表示出来,按好按钮,然后有个确定按钮,一按,一个字节的数据就输入到计算机里面去了。最古老的机器码程序都是这么写的。
当然,这样太慢,后来出现穿孔纸带,一排算一个字节,打孔算1,不打孔算0,一排8个位置,表示8位二进制数字,这样效率高一些,可以一次把几十上 百个Bytes打好,然后一次输入到计算机里面。有个扫描仪类似的东东,把纸带从一端插入,一按按钮,纸带过一遍,这些数据就都进去了。
后来慢慢有了行编辑,有了电传打字机,慢慢又进化到显示器+键盘,然后又进化到图形界面,你现在看到的,是进化了60年的计算机。
存储器/输入输出
输入输出
刚才说了内存和CPU速度不匹配的问题。其实硬盘的速度更慢。那个都是多少转一分钟。如果你让CPU去等硬盘的速度还不如去让 CPU去适应你敲键盘。还要几GHz的CPU干什么。早期的5000次加法一秒的绰绰有余。在最早的时候。计算机的鼻祖我始终认为是英国军情处的电子计算 机而不是那个什么美国货。那个时代的计算机是破译德军密码用的。用到了大量运算。为了保密。才使得美国佬说他们是计算机的发明人。说远了。那个时代的电器 工程师拨各个开关。再后来是计算机就是穿孔。一个纸条分割为若干个区域。1表示打孔。没孔表示0.然后计算机读。这样一次输入一个。太慢了。再后来有了卫 星机。卫星机负责输入和输出到运算机。大家的纸条的内容都到了卫星机里面。再后来的后来的后来的后来到了现在。里面的过程你去看操作系统。
存储器
到了卫星机后渐渐的也就演变了。我们的计算机也不叫冯诺依曼机(系统)了。叫存储机(哈佛系统)①。你人输入的再快也赶不上CPU的 速度快。也就解放出来。存储系统有了内存。有了硬盘,磁带,光盘,优盘乃至你的PDA,手机。这个速度是一个比一个慢。但是可以通过多个数据通路的方法来电子的完成。而不是机械的完成。如果是机械的完成飞机到了今天发动机也就是那么快。而计算机的早就到了GHz。存储系统你看计算机系统结构(体系结构)的 书和计算机组成原理。
6.内存为什么可以存储呢?
内存是一种特殊的集成电路块,有三种引脚,一种是地址线,表示下个动作要碰触内部哪个单元,一般是8、16、32根,根据这个集成块内部能存储的数 据多少来说。一种是数据线,一般是8根,也有16根,32根,分表表示不同位宽的数据,还有一种是触发器,表示下面进行哪个动作。
内存有两种状态,一种是写状态,就是你在数据线用高低电平放好一个数据(8位二进制),地址线用高低电平放好一个地址,然后电路以一个高电平或者低 电平,触发其写脚,数字就被拷贝到内部指定单元。读呢反过来,地址线放好地址,触发一个读脚,数据线上就可以读到高低电平,就是内部该单元的数据。
内存其实就是可以保存状态的一个电路,如果我们把那个单元设置为高电平,一般说来只要不改它,下次无论什么时候读,都是高电平。磁盘,光盘其实都很类似,就是我们在某个点设置某个信号,这种材料能保证我们下次来读的时候,还能读到这个信号。
内存种类很多,不过大体意思是这个意思。
内存是通过电容实现的。不过不是普通的电容。具体的你看组成原理的书。
内存的工作方式
内存有单元有四个大线。地址总线,数据总线,读写线和控制线。宏观内存只有三个线好比你的寝室楼。地址总线表示你房间在哪里。数据就是你和你室友,到底是谁?读写线表示开门后是进来还是出去。控制线是让不让开门。这个组成原理的存储结构那章有。后两个就是一根线。
微观来说你们一层楼一次走廊只能走一个人。不然就不知道谁是谁了。宏观来说寝室楼可以各个楼层都走一个人。这样就是一个字一个字的传送而不是一位一位的。你问如果让我们楼层的每间单独传送怎么办。没办法。一次一位。但是计算机组成原理和体系结构里面相邻的地址在物理上是纵向设计的。
1234
5678
1357
2468
实际的是下面的。一次也就是12 两个。一起。
计算机硬件的还有很多东西。如果有疑问大概过了年我就会有很多时间上线了。到时候慢慢交流。
先回答道这里吧,建议你应该多看看专业书。
涉及的书:电路,数字逻辑,计算机组成原理,微机原理与汇编,单片机与嵌入式系统,操作系统,计算机系统结构,计算机网络。
这个也就是CS专业的硬件的和理论的全部了。
除了人工智能基本上剩下的都是软件了。其实人工智能也是软件的一种思想。
GL
注①哈佛结构和普林斯顿结构(冯诺依曼结构)其实并不是文中那样。只是在程序和代码的内存方面的分歧。不过早期的转变带来了计算机巨大的发展。详细请看http://student.csdn.net/space.php?uid=39017&do=blog&id=17610