CSAPP学到第六章了,一脸懵比,有点不知所云了,所以索性从CSAPP中脱身去补点基础先,在B站看到Ele实验室的知识分享,感觉很有意思,因此记录一下过程。链接在这:从0到1设计一台计算机.
第一话-人脑计算机
先清楚实现的目标,是通过硬件设计运行贪吃蛇,且为了简单起见不考虑撞墙和吃自己。
1.创建一条蛇,就是把蛇的数据存到计算机中,所以设计的计算机需要有存储数据的功能。
2.需要判断蛇的方向来决定执行哪个方向的更新,因而需要有条件判断。
3.在更新蛇头中有加法和减法的运算,所以我们的计算机要能够实现加法和剑法。
4.当我们更新完蛇身以后,需要跳转到之前的位置反复执行,所以还需要有过程跳转。
5.我们这些要求要用计算机能懂的语言告诉计算机,因而要有存储指令的功能
至此粗略的设计了完成贪吃蛇的必备功能
第二话-冯诺伊曼和哈佛
电脑主板上也就三个主要部分,CPU、内存和硬盘。目前计算机主要将程序和数据都存放在内存,是在执行之前从硬盘移动到内存中,再从内存读取执行。程序和数据共用一套地址和IO线路,所以硬盘(外存)只是程序的一个非易失性备份,这也就是两大计算机结构之一的冯诺伊曼结构
。
另一种将程序与数据分开,程序放在只读的ROM存储器,数据放在RAM存储器中,和CPU之间分别走不同的数据线路,这也就是之二的哈佛结构
,是这次研究的对象。
贪吃蛇如何在哈佛结构中运行呢?
CPU从ROM中取出第一部分程序,创建一条蛇。简单起见,创建一个长度为1的蛇,创建的过程就是把蛇头的x和y坐标值存在内存RAM中,CPU继续从ROM中取出下一个程序,移动这条蛇。假如现在是向右移动,就取出RAM中的X到寄存器中,将其加1后写回RAM中。
第三话-再谈RAM和ROM
存储器就像一组抽屉,比如一个256字节的存储器,就有编号0~255的抽屉,每个抽屉里能存放一个字节的数据,而这些抽屉被包裹起来也就形成了存储器。如果存储器中的数据是8位的,那数据线是8根。如果存储器的容量是256字节,地址线也是8根。假如从地址线中输入2,那么就会从数据线中弹出1号抽屉存放的数据,这就是ROM存储器
的全部。