我通常会在SO和其他地方(教师,书籍作者等)碰到大师,他们会说一些类似的话"This will cause alignment issues"
或其他低级技巧。
我想了解所有relevant
与编程有关的花絮。现在通常当我看到低级书籍(例如计算机体系结构书籍)时,它们太低级了,并且适合那些主要关注计算机体系结构而不是软件设计的人们。
您是否对与程序员相关的入门书籍有一些建议?
我通常会在SO和其他地方(教师,书籍作者等)碰到大师,他们会说一些类似的话"This will cause alignment issues"
或其他低级技巧。
我想了解所有relevant
与编程有关的花絮。现在通常当我看到低级书籍(例如计算机体系结构书籍)时,它们太低级了,并且适合那些主要关注计算机体系结构而不是软件设计的人们。
您是否对与程序员相关的入门书籍有一些建议?
Answers:
可悲的是,我不知道现代的等同于微处理器:R。Dewar的程序员观点。我所知道的最接近的是《计算机组织与设计》,第四版:David A. Patterson和John L. Hennessy撰写的《硬件/软件接口》,但我不确定您是否认为它不会太低?您一定会为他们的其他作品《计算机体系结构》(一种定量方法)做到这一点。
在网上,此http://www-uxsup.csx.cam.ac.uk/courses/Architecture/course.pdf可能会为您提供所需的内容。
我发现Hennessy和Patterson的“计算机体系结构:一种定量方法”(亚马逊链接)是一种非常强大而可靠的计算机体系结构方法,其中有许多与编程直接相关的案例研究。
在美国,许多本科和研究生CS建筑课程都在不同程度上使用了它。
不久前,它在Ars Technica上也获得了不错的评价。
这就是我现在在我的计算机系统课程中所使用的计算机系统:程序员的观点(第二版),尽管该课程刚刚开始,但我一直在研究并非常喜欢它。
这是这本书的描述:
很少有计算机科学或计算机工程专业的学生有机会构建计算机系统。另一方面,大多数学生将被要求每天使用和编程计算机。计算机系统:程序员的观点通过显示这些思想如何影响应用程序的正确性,性能和实用性,介绍了计算机系统基础的重要而持久的概念。本书的动手方法(包括一套全面的实验)可以帮助学生了解现代计算机系统的“幕后”操作,并为以后的系统主题(如编译器,计算机体系结构,操作系统,和网络。
在生物学上可能是错误的,但在计算机科学中,“本体论概括了系统发育”。自第一批计算机以来,对计算机体系结构的历史回顾是从程序员的角度理解计算机体系结构主题的一种好方法。计算机设计几乎是早期设计的全部改进。
也就是说,我建议您学习完整的,较旧的系统设计,并使用在计算机科学中为您提供的理论性“计算机体系结构”书籍。真正了解系统设计,并在编写软件方面做得非常出色。直观地掌握计算机系统的体系结构需要精通许多概念。我认为,如果您从计算机体系结构的大小和范围更易于管理的角度出发,那么您可能会怀着实现更好的代码的目标。
(顺便说一下,(另一个人提到的那本“编写出色的代码””书系列看起来很棒,而且我已经编辑了我的问题,以消除我以前在“从书本学习中学习”所带来的任何麻烦,因为它看起来很棒! )
可以很好地教会计算机体系结构的一些事情:
我喜欢从1980年代开始选择机器作为向人们解释和演示事物的起点,因为那是我开始使用计算机的时候。我使用了commodore 64程序员的参考指南,向人们展示了编程知识和计算机体系结构知识相互融合的起点。有了这样的书,或者也许是在PC上运行的Commodore 64仿真器,您就可以尝试一些东西,您将了解如何真正构建1980年代经典计算机体系结构中的计算机系统。在我看来,一个具体的例子是一个更好的起点,而不是十几个缺少使事情起作用的现实世界细节的理论模型。如果您知道什么是寄存器,什么是ALU,什么是总线,什么是时钟,以及在1980年代的旧设计中使用了哪种信号系统,将为您提供了解最新知识(例如英特尔的“桑迪桥架构”)所需的基础知识。从历史上看,回头看原始内容,例如在Wikipedia上查找“冯·诺依曼”架构。
从我的第一点开始前进;了解原始的IBM PC体系结构,8086汇编语言和ISA总线。从此及其局限性,可以更自然地理解“ Intel COre i7” CPU包含的内容,PCI和PCI-e总线的功能以及为什么需要它们。如今的PC体系结构与原始IBM PC设计相比仍有一些“遗漏”。在2011年PC上进行初始程序(操作系统)加载(启动)的方式仍然很大程度上归因于原始IBM PC及其ROM BIOS的遗产,以及原始PC中的CMOS设置。
使用和修改可在某些嵌入式非PC设备上运行的Linux的预配置版本,您将学到很多关于嵌入式计算机体系结构的知识,不仅是技术体系结构,而且还包括其中为什么有些功能。TS-7200是一个便宜的好例子,它具有不错的PC-104(与原始PC相同的ISA总线)。PC-104(与IBM PC / AT 80286时代的PC引脚兼容的嵌入式16位ISA总线)计算机是非板级设计人员构建嵌入式系统的好方法,因为这些模块是可堆叠的。是否需要一些额外的IO或外围设备?只需堆叠几个模块。TS-7200具有非x86内核(ARM9 cpu),能够运行big-endian或little-endian。如果您还没有在体系结构学习过程中遇到“字节序”问题,那么这是一个遇到它的好地方。