计算机是怎样跑起来的1-2章

前言

不仅是计算机,其他学问亦是如此。首先要划出一个“知识的范围”,精通一门学问所必知必会的知识都在这个范围内。其次是掌握该范围内每个知识点中“基础中的基础知识”。最后是能独当一面的“目标”,即掌握了这些知识可以做什么。

本书要讲解的关键词
“基础中的基础知识”“知识范围”以及“目标”。

第1章 计算机的三大原则  

 
计算机是执行输入、运算、输出的机器
程序是指令和数据的集合

输入、运算、输出是硬件的基础 
硬件由很多的IC构成,IC有很多引脚,有的负责输入,有的负责输出。IC内部会对数据进行运算;

时常把输入、运算、输出这三者想成是一套流程,这一点很重要。其实计算机就是台简单的机器,因为它只能做这三件事。

如果打算用计算机做点什么的话,就要考虑该如何进行输入、如何获取输出以及进行怎样的运算才能从输入得到输出。

软件是指令和数据的集合  
无论程序多么高深、多么复杂,其内容也都是指令和数据。所谓指令,就是控制计算机进行输入、运算、输出的命令。

程序中的数据分为两类,一类是作为指令执行对象的输入数据,一类是从指令的执行结果得到的输出数据。

对计算机来说什么都是数字 
用数字表示所有信息,这就是一个很具有代表性的计算机式的处理方法。
文字会被转换成相应的数字再做处理,这样的数字叫作“字符编码”。总之计算机会把什么都用数字来表示。
 
只要理解了三大原则,即使遇到难懂的最新技术,也能轻松应对  
【有关.NET的说明之一】
微软公司率先提出了作为新一代互联网平台的.NET技术。作为.NET核心的XML Web服务使用通用技术SOAP、XML,促使企业间的计算机协同工作。

【有关.NET的说明之二】
计算机是执行程序的机器。程序是指令和数据的集合。为了使互联网上相互连接的计算机能通过程序协同工作,微软公司采用了SOAP以及XML规范。SOAP是关于调用指令的规范,XML则是定义数据格式的规范。
只要定义出了指令和数据的规范,装有符合规范的程序的计算机自然就可以相互协作了。所谓计算机的协同工作指的是,输入到一台计算机中的数据,可以通过互联网传送到与这台计算机相连的其他计算机上执行运算,运算所输出的结果再返回给这台计算机。像这样部署在其他计算机上能执行某种运算的程序就叫作XML Web服务。

为了贴近人类,计算机在不断地进化  
XP-Experience(体验)

稍微预习一下第2章  

CPU是计算机的大脑,在其内部可对数据执行运算并控制内存和I/O。内存用于存储指令和数据。I/O负责把键盘、鼠标、显示器等周边设备和主机连接在一起,实现数据的输入与输出。

只要用电路把CPU、内存以及I/O上的引脚相互连接起来,为每块IC提供电源,再为CPU提供时钟信号,硬件上的计算机就组装起来了,还是非常简单的吧。所谓时钟信号,就是由内含晶振的、被称作时钟发生器的元件发出的滴答滴答的电信号。

第2章 试着制造一台计算机吧  

CPU是Central Processing Unit(中央处理器)的缩写。

通常用Hz来表示驱动CPU运转的时钟信号的频率。1秒发出1次时钟信号就是1Hz,所以100MHz(兆赫兹)的话就是100×100万= 1亿次/秒。M(兆)代表100万。
1GHz=10亿Hz=10^9Hz

CPU上数据总线的条数,或者CPU内部参与运算的寄存器的容量,都可以作为衡量CPU性能的比特数。在Z80 CPU中,无论是数据总线的条数还是寄存器的容量都是8比特,所以Z80 CPU是一款8比特的CPU。而在Windows个人计算机中广泛使用的Pentium(奔腾)CPU则是32比特的CPU。

制作微型计算机所必需的元件  

这里写图片描述
连接电源、数据和地址总线  
首先:VCC 就是 voltage circuit 的缩写,意思是电流入口,GND就是 ground 的缩写,意思是GND就是公共端的意思,也可以说是地,但这个地并不是真正意义上的地。是出于应用而假设的一个地,对于电源来说,它就是一个电源的负极。它与大地是不同的。有时候需要将它与大地连接,有时候也不需要,视具体情况而定。因此:VCC代表直流电源的正极;GND代表直流电源的负极。

计算机以CPU为中心运转。CPU可以与内存或I/O进行数据的输入输出。为了指定输入输出数据时的源头或目的地,CPU上备有“地址总线引脚”。Z80 CPU的地址总线引脚共有16个,用代号A0~A15表示,其中的A表示Address(地址)。后面的数字0~15表示一个16位的二进制数中各个数字的位置,0对应最后一位、15对应第一位。16个地址总线引脚所能指定的地址共有65536个,用二进制数表示的话就是0000000000000000~1111111111111111。因此Z80 CPU可以指定65536个数据存取单元(内存存储单元或I/O地址),进行信息的输入输出。
一旦指定了存取数据的地址,就可以使用数据总线引脚进行数据的输入输出了。Z80 CPU的数据总线引脚共有8个,用代号D0~D7表示。其中的D表示Data(数据),后面的数字0~7与地址总线引脚代号的规则相同,也表示二进制数中各个数字的位置。Z80 CPU可以一次性地输入输出8比特的数据,这就意味着如果想要输入输出位数(比特数)大于8比特的数据,就要以8比特为单位切分这个数据。
作为内存的TC5517上也有地址总线引脚(A0~A10)和数据总线引脚(D0~D7)。这些引脚需要同Z80 CPU上带有相同代号的引脚相连。一块TC5517上可以存储2048个8比特的数据(如图2.6所示)。可是由于用于输入程序的指拨开关是以8比特为一个单位指定内存地址的,所以我们只使用TC5517上的A0~A7这8个引脚,并把剩余的A8~A10引脚连接到0V上(这些引脚上的值永远是0)。虽然总共有2048个存储单元,最终却只能使用其中的256个,稍微有些浪费。

连接I/O  
寄存器是位于CPU和I/O中的数据存储器。

连接时钟信号  
Z80 CPU和Z80 PIO的运转离不开时钟信号。为了传输时钟信号,就需要把时钟发生器的8号引脚和Z80 CPU的CLK(CLK即Clock,时钟)引脚、Z80 PIO的CLK引脚分别连接起来。时钟发生器的8号引脚与+5V之间的电阻用于清理时钟信号。

这里写图片描述

综述

Z80 CPU
Vcc引脚/GND引脚:VCC代表直流电源的正极;GND代表直流电源的负极。
引出的概念:
1个二进制数{数字IC上的1个引脚所能表示的0或者1}所表示的信息称为1bit;
8个二进制数称为1字节;比特是信息的最小单位,字节是信息的基本单位。

A0-A15{A0-A7,A8-A15}
{16个引脚可以指定65536个地址,即指定65536个数据存储单元。内存存储单元或I/O地址}
CPU上的地址总线引脚,作用是在CPU与内存或I/O进行数据的输入输出时指定输入输出数据时的源头或目的地。

D0-D7:指定了存取数据的地址就可以使用数据总线引脚进行数据的输入输出。
8个数据总线引脚,表示Z80CPU可以一次性输入输出8bit数据。如果想要输入输出大于8比特的数据就要以8比特位单位切分这个数据。

内存TC5517
2056个8bit存储单元
A0-A10:地址总线引脚 2^11 = 2048个地址
D0-D7:数据总线引脚
Vcc/GND

指拨开关:用于输入程序,以8比特为一个单位指定内存地址。因此TC5517上只使用A0-A7这8个引脚,其余的引脚接到0V上。虽然有2048个存储单元,但是只能使用256个

时钟发生器也有接通电源的引脚-Vcc引脚/GND引脚:VCC代表直流电源的正极;GND代表直流电源的负极。
相当于带有时钟的电信号,每隔一定时间就变换一次高低电压。

例题

例题:若内存容量为4GB,字长为32,则__
A.地址总线和数据总线的宽度都为32
B.地址总线的宽度为30,数据总线的宽度为32
C.地址总线的宽度为30,数据总线的宽度为8
D.地址总线的宽度为32,数据总线的宽度为8
答案:A 字长对应数据总线宽度,容量4GB需要地址总线具备4GB的寻址能力。4GB=4*1024*1024*1024Byte=2^32Byte

wiki

总线(Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑。从另一个角度来看,如果说主板(Mother Board)是一座城市,那么总线就像是城市里的公共汽车(bus),能按照固定行车路线,传输来回不停运作的比特(bit)。这些线路在同一时间内都仅能负责传输一个比特。因此,必须同时采用多条线路才能发送更多数据,而总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率x宽度(Bytes/sec)。

PC上一般有五种总线:
数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为USB Bus和1394 Bus。控制总线宽度决定了CPU对系统中其它器件的控制能力。
扩展总线(Expansion Bus):可连接扩展槽和电脑。
局部总线(Local Bus):替换更高速数据传输的扩展总线。

地址总线的宽度决定CPU的寻址能力;
10位地址总线寻址能力2^10,一个存储单位8bit即1byte,因此10位寻址能力为1Kb
CPU是通过地址总线来指定存储单元的。地址总线能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址;
一个CPU有N根地址总线,则可以说这个Cpu的地址总线的宽度就为N;

数据总线的宽度决定了CPU与其他器件数据传送的一次数据传送量;
CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
数据总线的宽度决定了CPU和外界的数据传送速度。
每条传输线一次只能传输1位二进制数据。eg.8根数据线一次可传送一个8位二进制数据(1个字节)
8088CPU数据 每次传送8位

32位系统/64位系统寻址能力

对于32位的windows操作系统,其逻辑地址编码采用的地址位数是32位的,那么操作系统所提供的逻辑地址寻址范围是4GB,而在intel x86架构下,采用的是内存映射技术(Memory-Mapped I/O, MMIO),也就说将4GB逻辑地址中一部分要划分出来与BIOS ROM、CPU寄存器、I/O设备这些部件的物理地址进行映射,那么逻辑地址中能够与内存条的物理地址进行映射的空间肯定没有4GB了,看下面这幅图就明白了:

所以当我们装了32位的windows操作系统,即使我们买了4GB的内存条,实际上能被操作系统访问到的肯定小于4GB,一般情况是3.2GB左右。假如说地址总线位数没有32位,比如说是20位,那么CPU能够寻址到1MB的物理地址空间,此时操作系统即使能支持4GB的逻辑地址空间并且假设内存条是4GB的,能够被用户访问到的空间不会大于1MB(当然此处不考虑虚拟内存技术),所以用户能够访问到的最大内存空间是由硬件和操作系统两者共同决定的,两者都有制约关系。
  
对于64位的操作系统,其逻辑地址编码采用的地址位数是40位,能够最大支持1T的逻辑地址空间。考虑一种情况,假如CPU是64位的,地址总线位数是40位,操作系统也是64位的,逻辑地址编码采用的地址位数也是40位,内存条大小是64GB,那么是不是内存条的64GB全部都能被利用了呢?答案是不一定,因为这里面还要考虑一个因素就是内存控制器,内存控制器位于北桥之内(现在基本都是放在CPU里面了),内存控制器的实际连接内存的地址线决定了可以支持的内存容量,也就是说内存控制器与内存槽实际连接的地址线如果没有40位的话,是无法完全利用64GB的内存条的存储空间的。当然对于内存控制器这个问题几乎可以不用考虑,因为现在大多数的内存控制器至少都采用的是40位地址总线。

参考

《计算机是怎样跑起来的》
http://www.cnblogs.com/dolphin0520/archive/2013/05/31/3110555.html
https://zh.wikipedia.org/wiki/%E6%80%BB%E7%BA%BF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值