首页 > 代码库 > DIY理论武装之路
DIY理论武装之路
上个世纪90年代,安装有486/奔腾处理器,带有漂亮的图形界面的Windows 3.2/95的PC机大量进入中国。我有幸在那个时候开始接触到了计算机。
一本《PC天书2000》(大众软件2000年增刊)陪着我懵懵懂懂踏进了计算机的世界,“装机时一门艺术”这句口号现在还记得,“当前的电脑主要就是由CPU、主板、内存、显卡硬盘这五大配件组成”概括了“DIY的精华”。早期的大软(2000年)涉足了硬件,《电脑高手》昙花一现,后来的《微型计算机》杂志是完全面向硬件的,每年出的增刊有一定的参考价值。
如果要全面了解现代计算机PC的实际构造(而不是体系结构书介绍的构造原理),可以阅读国外的系统的介绍PC组成的书,主要有两本:
Peter Norton的《Inside the PC》,最早一版叫《Inside the IBM PC》,最后一版(算是9版)叫《New Inside the PC》
1994年引进了第5版,译本称为《386/486技术精粹》
1997年引进了第6版,译本称为《PC/Pentium实用技术指南》
2000引进了第8版,译本称为《PC技术内幕》
Scott Mueller的《Upgrading and Repairing PCs》,英文原版最新是第21版2013年出版。
2002年引进了第13版,翻译后叫做《PC硬件工程师手册》
学PC技术哪家强,看过这两本书中的一本,可以说就细致的把握了现代计算机(既PC)的每一个组成部件和这些部件的工业标准,以及这些部件是怎么组成一个完整的计算机硬件系统的。像一些很具体的问题,如“显卡决定计算机的性能”,“计算机如何发出声音”都能得到很好地解释。看过了现代计算机的实物,再了解了这些知识,就建立起一个基础,在这个基础上才能将计算机专业课中的理论和现实中能够买到的计算机实物建立起基本的概念联系了。
计算机体系结构的知识是抽象的理解计算机(主要是中央处理器)运行的原理,用来解释程序设计语言和软件是如何运行的。《计算机体系结构:量化研究方法》第5版、《深入理解计算机系统》(原书第2版)(程序员的视角)、《计算机组成与设计:硬件/软件接口》(原书第4版)都很不错,计算机体系结构的书偏重于中央处理器和软件的视角,一般忽略现代计算机的具体部件和发展历史过程的知识。体系结构的书是在硬件系统组成知识基础上的提高,是软件硬件结合的纽带。DIY的精神需要和计算机科学的理论相结合才能迸发无穷的力量。
当代计算机的核心是CPU。现在CPU产业讲究三元合一,三元合一就是三种力量结合为一体。这三种力量就是CPU,编译器和程序库(含操作系统,操作系统提供了基础的进程管理、内存管理、设备管理和文件管理功能,对于使用者来说也可以看做是程序库)。为了把生产出来的CPU销售出去,单纯提供CPU还不够,必须提供配套的编译器,提供实现了各种基础功能的程序库,比如操作系统、比如数学库。即使CPU厂商自己不能提供,也要处于同一产业联盟的盟友厂商协助提供。这样的CPU配套组合对于最终购买它的使用者来说才是可用的。比如注明的wintel联盟,Intel公司提供x86_64指令集的CPU和ICC编译器套件,Microsoft公司提供操作系统Windows和内含cl编译器的Visual Studio集成开发环境。比如龙芯,依靠开源力量,但是需要积累自己的力量去掌握编译软件和程序库的主动权。
IA32及其64位扩展x86_64的CPU,Intel公司发布的《intel 80386 programmer‘s reference manual》就是圣经,现在仍在新处理器微架构的变更继续发布新的版本,叫做《Intel 64 and IA-32 Architectures Software Developer Manuals》。但是全书原有的基础架构、指令集参考和系统编程指南三卷的组织方式没有变。是学习Intel CPU汇编语言的最终极参考手册。
如果把CPU看做计算机的中心,那么剩下的部分就构成了IO系统。IO的总线也有着丰富的发展。根据IO总线的类型,可看的书主要是:《PCI系统结构》第四版、《USB系统体系》(第二版)、《PCI-X系统的体系结构》(英文影印版)、《PCI Express系统体系结构标准教材》、《AGP系统体系》全面彻底的介绍了PC机IO总线的实现细节。ISA、PCI-X、AGP已经作古,《ISA系统架构》干脆就没有引进翻译,PCI也有退隐的迹象但是很有参考价值。现在已经是PCI Express和USB的天下。
在这里有两个高度发达的产业,一个是存储产业。《大话存储》第二版对这个产业有很详细的阐述,绝版的《使用Brocade光纤交换机建立SAN存储区域网》也值得一读。一个是计算机网络通讯产业。谢希仁的《计算机网络》是不错的入门教材。当前网络运行着IPv4协议,《TCP/IP详解》三卷本全面的阐述了这个协议的运行和实现。如果从业,CCNP系列教程,即《CCNP学习指南:组建Cisco多层交换网络(BCMSN)》(第4版)、《CCNP学习指南:组建可扩展Cisco互连网络(BSCI)》(第三版)、《CCNP自学指南:组建Cisco远程接入网络(BCRAN)》:第2版以及《TCP/IP路由技术》(第一卷)(第二版)和《TCP/IP路由技术》(第二卷)都是必须掌握的技能。
操作系统直接控制着计算机硬件。学习过操作系统原理,都会梦想自己动手编写一遍操作系统,以前这样的想法只能停留在空想阶段,现在不一样了,很多人已经迈出了坚实的脚步。(也会梦想看懂Linux的源代码,这个了解的人很多,不提。)
于渊的《自己动手写操作系统》(2005年出版)和《Orange‘S:一个操作系统的实现》(2009年出版)
“指尖操作系统”,一位网友实现了一个IA32图形界面的简单操作系统。网站:http://www.os-z.com,2006年11月0.1版,2008年6月0.22版,2009年7月0.34版,2010年4月0.40版,9月0.44版(最新)。没有放出源代码,也没有出书介绍实现方法和过程。
2013年从日本引进翻译的《30天自制操作系统》、《自制编程语言》、《CPU自制入门》,三本书相互独立,分别介绍了IA32上操作系统的实现(带图形界面和很多图形应用程序,很酷),用C语言制作两种实验性语言的编译器,从零组合一个简单计算机系统。
探索的步伐和深度进一步深入。CPU也可以自己捏一个。
清华大学网格与集群式计算研究组朱子玉、李亚民的《CPU芯片逻辑设计技术》2005年,逐步实现了一个MIPS CPU。
《计算机系统要素:从零开始构建现代计算机》2007年版,从底向上,从硬件到软件,从NAND门开始,构建出一个简单的计算机系统,然后实现汇编器、虚拟机、编译器和操作系统。实现的Hack CPU不带中断,所以实现的OS基本上就是一些程序库,从在“显示器”上画黑线到绘制出太阳、房屋“简笔画”,每向前进一步都震撼一次心灵。
我是在搜索《CPU芯片逻辑设计》时候,通过搜索引擎的提示,在豆瓣上看到这本书的。正好和自己想走的方向一致,就弄来看看。书有一个官方网站:http://www.nand2tetris.org。书中使用的硬件模拟器等软件(网站称之为Nand2Tetris Software Suite)可以在这个网站下载到。
龙书《编译原理》(Compilers: Principles, Techniques, and Tools)第二版、《编译器设计》(Engineering a Compiler)第二版。编译器原理的圣经。
计算机的本质是什么?很多国产的中小学的入门教材把信息化作为学习计算机的最终目标,也就默认了计算机的本质是信息论。从社会的层面、应用的视角或许是这样。但如果对于将计算机技术作为本职专业的从业人员,这样认为就不准确了。我认为计算机的本质是可计算理论。是可计算理论奠定的计算机得以存在的理论基础,使计算机从机械机器向电子机器,从真空管、晶体管向集成电路、超大规模集成电路一步一步发展过来。再过10年,硅片制程工艺将在7nm到5nm之间走到物理极限,也许以超大规模集成电路、单芯片CPU为特征的第四代电子计算机将走向终结,但是可计算理论将会被延续,也将会有新的发展。下一代的计算机会是量子机器么?《计算机技术发展史(一):早期的计算机器及电子管计算机》和《计算机技术发展史(二):晶体管、集成电路计算机》或许能帮你总结历史,预测未来。
所以学习计算机体系结构、操作系统原理、编译原理应该相互联系,将CPU实现乃至整个计算机的实现,和编译原理、操作系统原理和实现结合起来,有了这个坚实的基础,在不断积累丰富的感性认识材料,最终支撑起对离散数学和可计算理论的学习。才算看清楚庐山真面目、触及了来龙去脉了。
一本《PC天书2000》(大众软件2000年增刊)陪着我懵懵懂懂踏进了计算机的世界,“装机时一门艺术”这句口号现在还记得,“当前的电脑主要就是由CPU、主板、内存、显卡硬盘这五大配件组成”概括了“DIY的精华”。早期的大软(2000年)涉足了硬件,《电脑高手》昙花一现,后来的《微型计算机》杂志是完全面向硬件的,每年出的增刊有一定的参考价值。
如果要全面了解现代计算机PC的实际构造(而不是体系结构书介绍的构造原理),可以阅读国外的系统的介绍PC组成的书,主要有两本:
Peter Norton的《Inside the PC》,最早一版叫《Inside the IBM PC》,最后一版(算是9版)叫《New Inside the PC》
1994年引进了第5版,译本称为《386/486技术精粹》
1997年引进了第6版,译本称为《PC/Pentium实用技术指南》
2000引进了第8版,译本称为《PC技术内幕》
Scott Mueller的《Upgrading and Repairing PCs》,英文原版最新是第21版2013年出版。
2002年引进了第13版,翻译后叫做《PC硬件工程师手册》
学PC技术哪家强,看过这两本书中的一本,可以说就细致的把握了现代计算机(既PC)的每一个组成部件和这些部件的工业标准,以及这些部件是怎么组成一个完整的计算机硬件系统的。像一些很具体的问题,如“显卡决定计算机的性能”,“计算机如何发出声音”都能得到很好地解释。看过了现代计算机的实物,再了解了这些知识,就建立起一个基础,在这个基础上才能将计算机专业课中的理论和现实中能够买到的计算机实物建立起基本的概念联系了。
计算机体系结构的知识是抽象的理解计算机(主要是中央处理器)运行的原理,用来解释程序设计语言和软件是如何运行的。《计算机体系结构:量化研究方法》第5版、《深入理解计算机系统》(原书第2版)(程序员的视角)、《计算机组成与设计:硬件/软件接口》(原书第4版)都很不错,计算机体系结构的书偏重于中央处理器和软件的视角,一般忽略现代计算机的具体部件和发展历史过程的知识。体系结构的书是在硬件系统组成知识基础上的提高,是软件硬件结合的纽带。DIY的精神需要和计算机科学的理论相结合才能迸发无穷的力量。
当代计算机的核心是CPU。现在CPU产业讲究三元合一,三元合一就是三种力量结合为一体。这三种力量就是CPU,编译器和程序库(含操作系统,操作系统提供了基础的进程管理、内存管理、设备管理和文件管理功能,对于使用者来说也可以看做是程序库)。为了把生产出来的CPU销售出去,单纯提供CPU还不够,必须提供配套的编译器,提供实现了各种基础功能的程序库,比如操作系统、比如数学库。即使CPU厂商自己不能提供,也要处于同一产业联盟的盟友厂商协助提供。这样的CPU配套组合对于最终购买它的使用者来说才是可用的。比如注明的wintel联盟,Intel公司提供x86_64指令集的CPU和ICC编译器套件,Microsoft公司提供操作系统Windows和内含cl编译器的Visual Studio集成开发环境。比如龙芯,依靠开源力量,但是需要积累自己的力量去掌握编译软件和程序库的主动权。
IA32及其64位扩展x86_64的CPU,Intel公司发布的《intel 80386 programmer‘s reference manual》就是圣经,现在仍在新处理器微架构的变更继续发布新的版本,叫做《Intel 64 and IA-32 Architectures Software Developer Manuals》。但是全书原有的基础架构、指令集参考和系统编程指南三卷的组织方式没有变。是学习Intel CPU汇编语言的最终极参考手册。
如果把CPU看做计算机的中心,那么剩下的部分就构成了IO系统。IO的总线也有着丰富的发展。根据IO总线的类型,可看的书主要是:《PCI系统结构》第四版、《USB系统体系》(第二版)、《PCI-X系统的体系结构》(英文影印版)、《PCI Express系统体系结构标准教材》、《AGP系统体系》全面彻底的介绍了PC机IO总线的实现细节。ISA、PCI-X、AGP已经作古,《ISA系统架构》干脆就没有引进翻译,PCI也有退隐的迹象但是很有参考价值。现在已经是PCI Express和USB的天下。
在这里有两个高度发达的产业,一个是存储产业。《大话存储》第二版对这个产业有很详细的阐述,绝版的《使用Brocade光纤交换机建立SAN存储区域网》也值得一读。一个是计算机网络通讯产业。谢希仁的《计算机网络》是不错的入门教材。当前网络运行着IPv4协议,《TCP/IP详解》三卷本全面的阐述了这个协议的运行和实现。如果从业,CCNP系列教程,即《CCNP学习指南:组建Cisco多层交换网络(BCMSN)》(第4版)、《CCNP学习指南:组建可扩展Cisco互连网络(BSCI)》(第三版)、《CCNP自学指南:组建Cisco远程接入网络(BCRAN)》:第2版以及《TCP/IP路由技术》(第一卷)(第二版)和《TCP/IP路由技术》(第二卷)都是必须掌握的技能。
操作系统直接控制着计算机硬件。学习过操作系统原理,都会梦想自己动手编写一遍操作系统,以前这样的想法只能停留在空想阶段,现在不一样了,很多人已经迈出了坚实的脚步。(也会梦想看懂Linux的源代码,这个了解的人很多,不提。)
于渊的《自己动手写操作系统》(2005年出版)和《Orange‘S:一个操作系统的实现》(2009年出版)
“指尖操作系统”,一位网友实现了一个IA32图形界面的简单操作系统。网站:http://www.os-z.com,2006年11月0.1版,2008年6月0.22版,2009年7月0.34版,2010年4月0.40版,9月0.44版(最新)。没有放出源代码,也没有出书介绍实现方法和过程。
2013年从日本引进翻译的《30天自制操作系统》、《自制编程语言》、《CPU自制入门》,三本书相互独立,分别介绍了IA32上操作系统的实现(带图形界面和很多图形应用程序,很酷),用C语言制作两种实验性语言的编译器,从零组合一个简单计算机系统。
探索的步伐和深度进一步深入。CPU也可以自己捏一个。
清华大学网格与集群式计算研究组朱子玉、李亚民的《CPU芯片逻辑设计技术》2005年,逐步实现了一个MIPS CPU。
《计算机系统要素:从零开始构建现代计算机》2007年版,从底向上,从硬件到软件,从NAND门开始,构建出一个简单的计算机系统,然后实现汇编器、虚拟机、编译器和操作系统。实现的Hack CPU不带中断,所以实现的OS基本上就是一些程序库,从在“显示器”上画黑线到绘制出太阳、房屋“简笔画”,每向前进一步都震撼一次心灵。
我是在搜索《CPU芯片逻辑设计》时候,通过搜索引擎的提示,在豆瓣上看到这本书的。正好和自己想走的方向一致,就弄来看看。书有一个官方网站:http://www.nand2tetris.org。书中使用的硬件模拟器等软件(网站称之为Nand2Tetris Software Suite)可以在这个网站下载到。
龙书《编译原理》(Compilers: Principles, Techniques, and Tools)第二版、《编译器设计》(Engineering a Compiler)第二版。编译器原理的圣经。
计算机的本质是什么?很多国产的中小学的入门教材把信息化作为学习计算机的最终目标,也就默认了计算机的本质是信息论。从社会的层面、应用的视角或许是这样。但如果对于将计算机技术作为本职专业的从业人员,这样认为就不准确了。我认为计算机的本质是可计算理论。是可计算理论奠定的计算机得以存在的理论基础,使计算机从机械机器向电子机器,从真空管、晶体管向集成电路、超大规模集成电路一步一步发展过来。再过10年,硅片制程工艺将在7nm到5nm之间走到物理极限,也许以超大规模集成电路、单芯片CPU为特征的第四代电子计算机将走向终结,但是可计算理论将会被延续,也将会有新的发展。下一代的计算机会是量子机器么?《计算机技术发展史(一):早期的计算机器及电子管计算机》和《计算机技术发展史(二):晶体管、集成电路计算机》或许能帮你总结历史,预测未来。
所以学习计算机体系结构、操作系统原理、编译原理应该相互联系,将CPU实现乃至整个计算机的实现,和编译原理、操作系统原理和实现结合起来,有了这个坚实的基础,在不断积累丰富的感性认识材料,最终支撑起对离散数学和可计算理论的学习。才算看清楚庐山真面目、触及了来龙去脉了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。