数字电路的理解

时间:2010-01-12 10:49:06

标签: digital-logic

在我开始编程之前,为了获得一些基础知识,我正在寻找关于计算机如何在核心级别工作的基本知识。

我有一个理论,实际上理解什么是例如stackoverflow更不用说堆栈了,而不是我对计算机系统的零星知识,将帮助我长期。

是否有任何书籍或网站可以帮助您了解处理器的结构,并提供全面的概述,以及与数字逻辑有关的知识?

我有意义吗?

5 个答案:

答案 0 :(得分:1)

是的,您应该阅读

的一些主题

John L. Hennessy& David A. Patterson,“计算机体系结构:定量方法”

它具有微处理器的历史和理论,(从RISC archs-MIPS开始),流水线,内存,存储等。

David Patterson是EECS部门计算机科学计算机教授 - 美国伯克利分校。 http://www.eecs.berkeley.edu/~pattrsn/

希望它有所帮助,这是链接

答案 1 :(得分:1)

Tanenbaum的Structured Computer Organization是一本关于计算机如何工作的好书。你可能会觉得很难通过这本书,但这主要是由于主题,而不是作者。

但是,我不确定我会建议采用这种方法。理解计算机的工作原理当然是有用的,但是如果你真的没有任何编程知识,你就无法真正充分利用你的知识 - 而且你可能还不需要那些知识。您最好不要学习面向对象编程和数据结构等主题来学习程序设计,因为除非您考虑在非常有限的系统上进行嵌入式编程,否则您会发现这些技能比知识更有用。计算机的内部运作。

答案 2 :(得分:1)

在我看来,20年前,从BASIC到操作系统,硬件,晶体管甚至量子级,都可以理解整个光谱。我不知道一个人有可能用今天的技术来理解整个范围。 (多年前,每个人都为自己的车提供服务。今天太难了。)

您可能感兴趣的一些“图层”:

答案 3 :(得分:1)

它非常简单--cpu加载指令并执行它们,大多数指令都围绕将值加载到寄存器或内存位置,然后操纵这些值。留出某些存储器范围用于与连接到机器的外围设备(例如屏幕或硬盘驱动器)通信。

回到Apple的时代] [和Commodore 64你可以将一个值直接放入一个内存位置,这将直接改变屏幕上的一个像素 - 那些日子早已过去,它被抽象出来了你(程序员)通过几层代码,例如驱动程序和操作系统。

你可以在硬件层面上了解这类东西或汇编语言(我非常喜欢)或者AND / NAND门,但是知道这类东西并不能帮助你编写代码。 ASP.NET MVC中的Web应用程序,或编写快速而脏的Python或Powershell脚本。

网上有很多资源可以让你深入了解CPU和其他硬件是如何工作的,但是如果你想要变得肮脏我真的认为你应该买一个旧的eBay或其他地方的机器,并了解它的汇编语言的特殊风格(我知道还有很多可编程PIC控制器,可能也很好学习)。拿起旧机器将消除软件抽象并使事情更容易学习。当您获得即时满足时,您可以更好地学习,例如让精灵在屏幕上移动或通过直接切换扬声器(或使用PIC控制器来控制小型机器人)来产生声音。对于那些旧机器,Apple的原理图[主板适合大约A2尺寸的纸张折叠到Apple手册的背面 - 我不想想象它们现在的样子。

答案 4 :(得分:0)

虽然我同意之前的答案,因为理解整个过程非常困难,但我们至少可以将其分解为类别,从最低(最接近电子)到最高(最接近你实际看到的)。

最低

固态器件物理(晶体管如何物理工作) 电路理论(如何组合晶体管以创建逻辑门) 数字逻辑(如何将逻辑门组合在一起以创建数字功能或数字结构,即多路复用器,全加器等) 硬件组织(如何在CPU中布置数据路径,Von Neuman机器的组件 - >存储器,处理器,算术逻辑单元,提取/解码/执行) 微指令(比特级编程) 汇编(使用单词编程,但直接指定寄存器并永远编程甚至简单的事情) 解释/编译语言(编译或解释为汇编的编程语言;操作系统可能属于其中之一) 操作系统(进程调度,硬件接口,低级摘要) 更高级别的语言(这些出现两次;它取决于语言.Java是在非常高的级别完成的,但C直接进行汇编,C编译器可能用C语言编写) 用户界面/应用程序/ Gui(最后一步,使它看起来很漂亮)

你可以找到很多关于这些的信息。我只是数字逻辑方面的专家。如果您想从头开始全面了解数字逻辑,请访问我网站的电气工程菜单:

affablyevil.wordpress.com

我正在上课,并在我去的时候加上在线课程。