精华内容
下载资源
问答
  • 计算机系统要素

    2014-06-23 19:22:42
    计算机系统要素,非常好的实用教材,[计算机系统要素:从零开始构建现代计算机].(尼萨).周维.扫描版
  • 计算机系统要素机.rar

    2021-03-26 16:51:55
    计算机系统要素:从零开始构建现代计算机
  • 计算机系统要素 pdf

    2017-11-13 12:56:31
    计算机系统要素pdf书籍下载,鉴于现有书籍资源分偏高,故上传一个资源分少的方便大家下载(本来想免积分下载的,但最少为2分)
  • 计算机系统要素——从零开始构建现代计算机》的配套工具,需要有JRE才能运行
  • 本文是笔者拜读《计算机系统要素》第5章(计算机体系结构)的学习笔记。

    本文是笔者拜读《计算机系统要素》第5章(计算机体系结构)的学习笔记。

    冯·诺伊曼体系结构的核心是存储程序的概念:计算机内存不仅存储着要进行操作的数据,还存储着指示计算机运行的指令。这几乎是所有现代计算机平台的基础。
    在这里插入图片描述

    中央处理器

    在这里插入图片描述
    在这里插入图片描述

    数据内存

    在这里插入图片描述
    在这里插入图片描述

    CHIP Memory {
        IN in[16], load, address[15];
        OUT out[16];
    
        PARTS:
        // Put your code here:
        DMux(in = true, sel = address[14], a = ram0, b = ram1);
        And(a = ram0, b = load, out = s0);
        RAM16K(in = in, load = s0, address = address[0..13], out = o0);
        And(a = ram1, b = load, out = s1);
        RAM16K(in = in, load = s1, address = address[0..13], out = o1);
        Mux16(a = o0, b = o1, sel = address[14], out = out);
    }
    
    /*
     * 16K + 8K + 1
     * if (address[14] == 0) {
     *     // 16K
     * }
     * else if (address[13] == 0) {
     *     // 8K
     * }
     * else {
     *     // 1
     * }
     */
    
    CHIP Memory {
        IN in[16], load, address[15];
        OUT out[16];
    
        PARTS:
        // Put your code here:
        Not(in = address[14], out = s0); // s0表示是否选择16K芯片
        And(a = s0, b = load, out = s1);
        RAM16K(in = in, load = s1, address = address[0..13], out = o0);
    
        Not(in = address[13], out = s2);
        Mux(a = s2, b = false, sel = s0, out = s3); // s3表示是否选择8K芯片
        And(a = s3, b = load, out = s4);
        RAM8K(in = in, load = s4, address = address[0..12], out = o1);
    
        Or(a = s0, b = s3, out = s5);
        Not(in = s5, out = s6); // s6表示是否选择1字的芯片
        And(a = s6, b = load, out = s7);
        Register(in = in, load = s7, out = o3);
    
        Mux16(a = o1, b = o0, sel = s0, out = o4);
        Mux16(a = o4, b = o3, sel = s6, out = out);
    }
    

    计算机

    在这里插入图片描述
    至此,简单介绍了计算机的硬件部分,接下来是软件部分。
    在这里插入图片描述

    展开全文
  • 计算机系统要素,从零开始构建现代计算机(nand2tetris)如果完成了本书所有的项目 你将会获得以下成就构建出一台计算机(在模拟器上运行)实现一门语言和相应的语言标准库实现一个简单的编译器而且,这本书的门槛...

    计算机系统要素,从零开始构建现代计算机(nand2tetris)

    如果完成了本书所有的项目 你将会获得以下成就

    • 构建出一台计算机(在模拟器上运行)
    • 实现一门语言和相应的语言标准库
    • 实现一个简单的编译器

    而且,这本书的门槛非常低,只要你能熟练运用一门编程语言即可。本课程综合了数字电路,计算机组成原理,计算机体系架构,操作系统,编译原理,数据结构等的主要内容,搭建了计算机平台的构建的框架,并未深入细节,如果需要了解细节,可由本书作为主线,逐步完善的知识体系。

    QQ交流群(含资料):39014053

    【高清-中字-公开课】依据基本原理构建现代计算机:从与非门到俄罗斯方块_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
    0b9164bd0e37015e6c01087996053b3e.png
    项目地址github.com

    本章要实现的逻辑门电路

    • and and16 (与门,16位按位与)
    • or or16 or8way (或门,16位按位或,8位全或)
    • not not16 (非门,16位按位非)
    • xor (异或)
    • mux mux16 mux4way16 mux8way16 (2选1选择器,16位2选1选择器,16位4选1选择器,16位8选1选择器)
    • dmux dmux4way dmux8way (解复用器,解4路复用,解8路复用)

    实现总结

    项目从最原始的Nand门出发,其他的门电路能够通过这个门电路构建得到。所以本章中所有的门电路都是基于Nand门来实现的,需要具备的基础是根据真值表设计门电路,需要会进行公式化简,当然这并不是必须的。

    and门

    输入管脚:a,b

    输出管脚:out

    公式如下:

    从公式来看使用两个与非门即可实现,其中一个输入是常量true。

    and16

    这个门是16位按位与门,对每个位执行与操作即可

    输入管脚:a[16], b[16]

    输出管脚:out[16];

    伪码:

    for i = 0..15:
        out[i] = (a[i] and b[i])

    not

    非门,利用与非门实现

    输入管脚:in

    输出管脚:out

    公式:

    not16

    16位按位非门,利用已经实现的非门对每位取非即可

    输入管脚:in[16]

    输出管脚:out[16]

    伪码:

    for i= 0..15:
    	out[i] = not in[i]

    or

    或门,利用与非门和已经实现的非门来实现

    输入管脚:a[16], b[16]

    输出管脚:out[16]

    公式:

    or16

    16位按位或

    输入管脚:a[16], b[16]

    输出管脚:out[16]

    伪码:

    for i = 0..15:
    	out[i] = (a[i] or b[i])

    or8way

    8位全或

    输入管脚:in[8]

    输出管脚:out

    伪码:

    out = (in[0] or in[1] or ... or in[7])

    xor

    异或门,使用非门,与门,或门来实现,到最底层都是通过与非门实现的

    输入管脚:a, b

    输出管脚:out

    公式:

    mux

    数据选择器,又称多路选择器,根据选择位,确定输出那个值

    输入管脚:a, b, sel

    输出管脚:out

    公式:(根据真值表得到公式)

    mux16

    16位按位选择,只需对每一位分别进行选择即可

    输入管脚:a[16], b[16],sel

    输出管脚:out[16]

    伪码:

    for i = 0..15:
    	if sel == 0
    		out[i] = a[i]
    	if sel == 1
            out[i] = b[i]

    mux4way16

    16为四选一选择器,类似分治的方法,先两两进行选择,然后再从选出的内容中进行选择

    输入管脚:a[16], b[16], c[16], d[16], sel[2];

    输出管脚:out[16]

    伪码:

    先根据,sel[0]进行选择,再根据sel[1]进行选择即可

    out = a if sel == 00
    	  b if sel == 01
    	  c if sel == 10
    	  d if sel == 11

    mux8way16

    16为八选一选择器,类似分治的方法,先四四进行选择,然后再从选出的两个中进行选择

    输入管脚:a[16], b[16], c[16], d[16], e[16], f[16], g[16], h[16], sel[3]

    输出管脚:out[16]

    伪码:

    先根据,sel[0..1]进行选择,再根据sel[2]进行选择即可

    out = a if sel == 000
    	  b if sel == 001
    	  etc.
    	  h if sel == 111

    dmux

    真值表

    inselab
    0000
    0100
    1010
    1101

    输入管脚:in, sel

    输出管脚:a, b

    公式:

    dmux4way

    解4路复用,先根据sel的第一位进行解复用,然后根据剩余的sel位,进行解复用

    输入管脚:in, sel[2]

    输出管脚:a, b, c, d

    dmux8way

    解8路复用,先根据sel的前两位进行解4路复用,然后根据剩余的sel位,进行解复用

    输入管脚:in, sel[3]

    输出管脚:a, b, c, d, e, f, g, h

    实际上:解复用器,就相当于由sel指定信号的输出路,由其中两路能确定4划分,每种划分中还包含两路,所以,根据剩余的sel位进行指定确定的路。


    展开全文
  • 计算机系统要素:从零开始构建现代计算机PDF清晰扫描版
  • 计算机系统要素-从零开始建造现代计算机(nand2tetris) 这本书主要讲解了计算机原理(1-5章),编译原理(6-11章),操作系统相关知识(12章)。不要看内容这么多,其实这本书的内容非常通俗易懂,翻译也很给力。每...
  • 本项目为本人在学习《计算机系统要素——从零开始构建现代计算机》一书过程中为书中各章的大作业所写的代码,已全部在本人机器上测试通过,供同好和后来者参考,本代码未做放错处理,仅供学习、研究和参考, ...
  • 计算机系统要素:从零开始构建现代计算机 代码实现 第二版
  • 这本书的中文译名是《计算机系统要素-从零开始构建现代计算机》 适合对计算机体系知识不熟悉的人 它对计算机体系有一个全面的介绍 当然 都是停留在入门阶段 但是 读完这本书并做完所有的项目 你对计算机的了解至少...

    这本书的中文译名是《计算机系统要素-从零开始构建现代计算机》

    适合对计算机体系知识不熟悉的人 它对计算机体系有一个全面的介绍 当然 都是停留在入门阶段

    但是 读完这本书并做完所有的项目 你对计算机的了解至少能超越50%的程度员

    先来看一看这本书的简介

    内容简介

    本书通过展现简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算机应用科学大图景。本书作者认为,理解计算机工作原理的最好方法就是亲自动手,从零开始构建计算机系统。
    通过12个章节和项目来引领读者从头开始,本书逐步地构建一个基本的硬件平台和现代软件阶层体系。在这个过程中,读者能够获得关于硬件体系结构、操作系统、编程语言、编译器、数据结构、算法以及软件工程的详实知识。通过这种逐步构造的方法,本书揭示了计算机科学知识中的重要成分,并展示其它课程中所介绍的理论和应用技术如何融入这幅全局大图景当中去。

    全书基于“先抽象再实现”的阐述模式,每一章都介绍一个关键的硬件或软件抽象,一种实现方式以及一个实际的项目。完成这些项目所必要的计算机科学知识在本书中都有涵盖,只要求读者具备程序设计经验。本书配套的支持网站提供了书中描述的用于构建所有硬件和软件系统所必需的工具和资料,以及用于12个项目的200个测试程序。

    全书内容广泛、涉猎全面,适合计算机及相关专业本科生、研究生、技术开发人员、教师以及技术爱好者参考和学习。

    这本书几乎没有门槛 只要你会一门编程语言即可

    如果从头到尾做完所有的项目 你将会写出一个简单的编译器和操作系统(标准语言库)

    听到这是不是觉得很难? NO 我只花了一个月的时间就做完了所有的项目 并不难

    只要每天花3小时 2个月内肯定是能做完的

    我已经完成了这本书所有的项目 附上答案做参考

    https://github.com/woai3c/nan...

    转载于:https://www.cnblogs.com/woai3c/p/10247923.html

    展开全文
  • 本文是笔者拜读《计算机系统要素》第4章(机器语言)的实践项目。

    本文是笔者拜读《计算机系统要素》第4章(机器语言)的实践项目。


    机器语言是一种约定的形式,用来对底层程序进行编码,从而形成一系列机器指令。高级语言的基本设计目标是通用性和较强的表达力;机器语言的设计目标是能直接运行在指定的硬件平台上,并能对这个平台进行全面操控。

    机器语言是整个计算机体系中意义最深奥的接口,它也是硬件和软件相接的中间线

    二进制码相当晦涩,通常在机器语言中同时使用二进制码和助记符,符号表示也称为汇编语言,将汇编程序翻译成二进制码的程序称为汇编编译器

    Hack机器语言规范

    Hack是一个基于冯·诺伊曼架构的16位计算机,由一个CPU、两个独立的内存模块(指令内存数据内存),以及两个内存映射I/O设备(显示器和键盘)组成。

    该计算机的两个内存区都是16位宽、有15位地址总线,所以这两个内存都包含32K16位字。指令内存是只读设备。

    Hack程序员要接触两个16位寄存器:DAD仅用来存储数据,A可以存储数据和地址。任何jump操作都是跳转到“A寄存器所指定的指令”。

    Hack命令包含了两种指令:地址指令(A指令)、计算指令(C指令)。

    A指令

    在这里插入图片描述
    在这里插入图片描述
    @value命令是将特定的值存储到A寄存器中。

    Hack语言的语法规定,内存的存取指令是对隐式的内存地址“M”进行操作。比如D=M+1M总是代表一个内存单元中的数值,而该内存单元的地址就是当前A寄存器中的数值。
    在这里插入图片描述
    M=Memory[A],上图中M的值就是1

    1加到100
    在这里插入图片描述

    和高级语言不同,这里的isum指的是地址。

    C指令

    在这里插入图片描述
    comp域告诉ALU计算什么;dest域指明计算后的结果将被存储到什么地方;jump域描述了转移条件,即下一步要执行哪一条命令(默认是紧接着当前指令的下一条指令)。

    jump操作能否实际执行取决于jump域和ALU的输出值。

    符号

    汇编命令可以使用常数或符号来表示内存单元地址。通过以下3种方式应用到汇编语言中:
    (1)预定义符号。
    a. 虚拟寄存器。符号R0R15代表015RAM地址。
    b. 预定义指针。符号SPLCLARGTHISTHAT表示04RAM地址。(这些内存位置有两种符号表示)
    c. I/O指针。符号SCREENKBD表示RAM地址16384(0x4000)和24576(0x6000),这两个地址分别是屏幕和键盘内存映像的基地址。

    (2)标签符号。
    用户自定义符号用来标记goto命令跳转的目的地址。用伪指令(Xxx)声明用户自定义符号,其意义是:Xxx代表程序中下一条命令的指令内存位置。标签在定义前也可以使用。

    (3)变量符号。
    任何用户定义的符号(相当于高级语言中的变量)被汇编程序赋予独立的内存地址(从RAM地址16,即0x10开始)。

    输入/输出处理

    物理I/O设备和它们对应的内存映像是通过连续的循环刷新来同步的。

    屏幕大小是256 x 512(黑白屏幕,1=黑,0=白),内存映射有8K字,每行使用32个连续的16位字表示。使用RAM[16384+r*32+c/16]字的c%16位,来访问屏幕的第r行,c列的像素。

    只要在键盘上敲击一个键,其对应的16ASCII码值就出现在RAM[24576]上;没有击键时,该内存单元为0.

    语法归约和文件格式

    二进制文件:每行由16个连串的01字符组成,代表一个指令。执行程序时,约定第n行所表示的二进制码被存储到指令内存地址为n的单元中(程序行数和内存地址都是从0计数)。机器语言程序被存储到扩展名为hack的文本文件中。

    汇编语言文件:汇编语言程序被存储到扩展名为asm的文本文件中。每行代表一个指令或符号定义:
    (1)指令。一条AC指令。
    (2)符号(symbol)。这条伪指令会让编译器把symbol标签分配给下一条命令被存储的内存单元地址。因为它不生产任何机器代码,所以称之为“伪命令”。

    程序实践

    乘法程序

    R0中的值和R1中的值相乘,结果存放在R2

    // mult.asm
    // 初始化最终结果
    @2 
    M=0
    // 定义并初始化i=1
    @i 
    M=1 
    
    (LOOP)
    // 循环控制 
    @1 
    D=M
    @i
    // i-R1 
    D=M-D 
    @END
    D;JGT
    // R2=R2+R0 
    @0
    D=M
    @2
    M=M+D
    @i
    M=M+1
    @LOOP
    0;JMP
    
    (END)
    @END
    0;JMP
    

    R0相加R1次得到R2
    CPU不能直接使用虚拟寄存器中的值进行运算。
    程序最后的无限循环仅供仿真器测试,和程序逻辑无关。

    I/O处理程序

    待定

    展开全文
  • 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」。...“计算机是由 硬件 和 软件 组件组...
  • 本文是笔者拜读《计算机系统要素》第2章(布尔运算)的实践项目。
  • 这本书的中文译名是《计算机系统要素-从零开始构建现代计算机》 适合对计算机体系知识不熟悉的人 它对计算机体系有一个全面的介绍 当然 都是停留在入门阶段 但是 读完这本书并做完所有的项目 你对计算机的了解至少能...
  • 计算机系统要素(1) 我们在之前介绍过的各种逻辑门,比如 Mux, DMux 等等,都是各种操作组合起来。所以由这些门构成的 chip 都叫组合 chip。像 CPU 里面的 ALU,这种提供了一些处理数据功能的芯片就是组合芯片的一...
  • 本文是笔者拜读《计算机系统要素》第1章(布尔逻辑)的实践项目,本文的HDL遵循的是书中的语法,并在配套的硬件仿真器中测试成功。
  • 本文是笔者拜读《计算机系统要素》第3章(时序逻辑)的实践项目。
  • 计算机系统要素 从零开始构建现代计算机 The Elements of Computing Systems Building a Modern Computer from First Principles 前言 Preface What I hear, I forget; What I see, I remember; What I do...
  • 本书通过展现简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算机应用科学大图景。本书作者认为,理解计算机工作原理的域好方法就是亲自动手,从零幵始构建计算机系统
  • 计算机系统要素学习》笔记之第5章 计算机体系结构 冯诺依曼体系结构:由一个中央处理单元(CPU)与记忆设备(memory device)即内存进行交互,负责从输入设备(input device)接收数据,向输出设备(output device)发送...
  • 数字计算机最独特的特点在于其功能多样性,一个由有限硬件组件构成的计算机却可以执行无限的任务队列; 计算机基于固定的硬件平台,能够执行固定的指令集,同时这些指令能被当成构建模块组成任意的程序;不同于1930...
  • 数字计算机最独特的特点在于其功能多样性,一个由有限硬件组件构成的计算机却可以执行无限的任务队列; 计算机基于固定的硬件平台,能够执行固定的指令集,同时这些指令能被当成构建模块组成任意的程序;不同于1930...
  • 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习...“ 计算机是由 硬件 和 软件 组件组成的复杂...
  • 计算机系统要素 C5

    2018-12-11 12:03:00
    而一般使用冯诺依曼结构的通用计算机只有一个存储器,即它的指令和数据是混存的。这带来了一个问题后来被称为冯诺依曼瓶颈,即 CPU 无法同时操作指令和数据,而需要使用一种 “取指令-执行指令” 的循环模式。在 CPU...
  • 计算机系统要素 C4

    2018-11-22 10:31:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • pro1 逻辑门 Not And Or Xor Mux DMux Not16 And16 Or16 Mux16 Or8Way Mux4Way16 Mux8Way16 DMux4way DMux8way pro2 布尔运算 HalfAdder FullAdder ...pro5计算机体系结构 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,652
精华内容 660
关键字:

计算机系统要素