《CODE》读后笔记——第21~25章

21.总线连接

  • 总线是提供给计算机中每块电路板的数字信号的集合,这些信号可以分为4类:地址信号,数据输入信号,数据输出信号,控制信号。另外,总线给计算机中的各个电路板提供电源。
  • S-100总线:早期流行,可以用在8080和6800处理器上。规格为5.3×10英寸,电路板的一边有100个 接头可插在插槽里。S-100有16个地址信号,8个数据输入信号,8个数据输出信号,8个中断信号。
  • IBM的ISA总线(Industry standard architecture)----->IBM的MCA总线(Micro channel architecture)----->9家公司(不含IBM)联合推出的32位EISA总线(Extended Industry standard architecture)----->Intel的PCI总线(peripheral component interconnect)
  • 8080的电路板上通常有一个Intel 8214优先级中断控制单元,用来处理中断。
  • 通常微处理器处理所有的内存读 /写操作,但通过DMA,其他设备可绕过微处理器通过总线直接进行内存读 /写操作。
  • 存储器芯片2102中的片选信号(CS),当信号为1时芯片不被选中,即低电平有效。为什么低电平有效呢,网上搜了一下:

主要是为了降低功率,因为选中信号输出时,地址译码器输出端为低电平,此时译码器不输出功率;选中信号没有输出(不选中)时,译码器输出端为高阻状态,输出消耗功率也为0。因此芯片的CS信号采用低电平有效可以最大程度减小片选控制的功率消耗。此外,低电平有效也可以最大程度地减小干扰和保证控制的可靠性。低电平有效时,外部的任何干扰都不能进入被控制的芯片,因而保证芯片的可靠工作。这样在干扰信号能够进入芯片时是在芯片不工作时(片选无效),也就是说,干扰信号对芯片的工作没有影响。而若采用高电平有效,在芯片工作时不要说外部干扰信号能够很容易地进入芯片干扰,造成各种误动作,就连电源的任何波动都可能影响芯片的正常工作。

  • 如果连接的是有4个存储体的4KB存储器板,则存储器板中16位地址信号完成的功能如下:

  • 如何灵活的连接存储板并设置存储地址范围?书中给出了解答。

  • 2102存储芯片的数据输出信号是三态输出。除了逻辑0和逻辑1外,数据输出信号还可以是第三种状态,这种状态就是什么都不是。当CS输入为1的时候,2102芯片就进入第三种状态,这意味着可以把 4个存储体对应的数据输出信号连接到一 起,并用这8个组合输出作为总线的8个数据输入信号。任何时候,连到总线上的众多电路板中只有一个用来确定总线上的数据输入信号是什么。其他电路板不被选中,输出为第三态。
  • 2102芯片是静态随机访问存储芯片(SRAM),除此之外还有动态RAM(DRAM)。SRAM存储1位需要多个晶体管,而DRAM只需要1个晶体管,但DRAM的外围支持电路比较复杂,而且需要刷新。

什么是ROM、RAM、DRAM、SRAM和FLASH的区别?http://www.21ic.com/jichuzhishi/mcu/memory/2014-04-23/322864.html

  • 键盘扫描码的工作原理:

  • 书中提到:软盘和硬盘所有这些接口均使用DMA来接管总线和在随机访问存储器和硬盘之间直接传送数据,且不需经过微处理器。每次传输的数量是磁盘扇区字节数的倍数。此处存疑?待后续查证吧。

22.操作系统

  • 历史上最流行的8位微处理器操作系统是CP/M,为8080而生。CP/M文件系统满足2个基本要求:

        1)磁盘中的每个文件有一个名字作为标识,这个文件名字也存放在磁盘里。

        2)文件在磁盘中并不占用连续的扇区。

  • CP/M的三个部件:基本输入/输出系统(BIOS)、基本磁盘操作系统(BDOS)和控制台命令处理系统(CCP)。
  • 操作系统的3个主要功能:提供命令和 实用程序以便对文件进行基本的操作;将程序装载到内存中并执行;为程序提供方便的访问计算机硬件的应用程序接口(API:application programming interface)。
  • 理论上讲,应用程序只能通过操作系统提供的接口它们来访问计算机的硬件。但对针对20世纪70年代和80年代早期的小型操作系统的应用程序而言,经常绕过操作系统,尤其是在处理视频显示器的时候。直接写入字节到视频存储器的程序比采用其他方式的程序执行速度要快。因此产生了GPU吗?催生了NVIDA和ATI?
  • 本章书中最后提到了UNIX,我只想评价一句话:UNIX牛X,贝尔实验室牛X,反垄断法更牛X!

23.定点数和浮点数

  • 虚数揭示了现实世界的奥秘,可以用来(例如)解决电子学的一些高级问题。虚数早就学过,但没用过,以后会不会用上这个工具呢?
  • 小数点通常固定在特定位置的标记方法称作定点格式。定点格式不标记小数点,处理定点格式数的程序应该知道小数点在哪。定点格式只在知道这些数不会超过预先确定的内存单元且没有太多小数位的场合比较适用,在数可能很大或可能很小的场合定点格式完全不适用。
  • 小数点不固定的标记方法称作浮点格式。浮点格式用来存储较小或较大的数比较理想。
  • ANSI/IEEE Std754-1985称作IEEE二进制浮点数算术运算标准。该标准定义了两种基本格式:单精度格式(4个字节);双精度格式(8个字节)。规格化二进制浮点数的有效数通常在二进制小数点左边为1,所以在IEEE格式中这一位不包含在浮点数的存储空间中。
  • 单精度浮点格式表示:(单精度浮点格式的精度约为7位十进制精度,1/16 777 216)

    

8位指数范围从0~255,称为移码指数,意思是必须从指数中减去一个数才能确定有符号指数的实际值。对单精度浮点数,偏移量为127。

  • 双精度浮点格式表示:(双精度浮点格式的精度约为16位十进制精度)

    

  • 浮点运算最初是编写软件在微处理器上执行运算,后续出现了浮点运算硬件——数学协处理器(或称浮点运算单元,FPU,Floating-point unit)。

24.高级语言和低级语言

  • 首先吐槽一句,汇编语言,Assembly Language,什么鬼,明明就是装配语言嘛!Assembly,装配,总成。
  • 汇编语言程序冗长,是在芯片级进行程序编程,另外还不能移植。汇编语言是低级语言。

计算机科学更像工程——都是用一些东西来实现另一些东西。

  • 编译程序是读取一个源文件,并产生一个可执行文件;而解释程序读取源代码并在读的过程中直接执行而不生成可执行文件。解释程序比编译程序容易编写,但解释程序的执行时间慢。
  • 一般来说,编程语言是冯诺依曼语言。但是至少有2个语言不是,LISP和APL。其实我想知道怎样才算非冯诺依曼语言?

25.图形化革命

  • 由键盘和CRT组合而成,对来自远方计算机的ASCII码或别的什么码作出响应,这样的设备有时称作哑终端。有点客户端的感觉。
  • 显示器技术发展促进了图形化革命,图形化革命引出了图形操作系统,面向对象的编程语言,图像处理,压缩算法,音频处理,数模转换,视频处理,视频压缩算法等等。。
  • 然后,信息时代就到来了,我就miss了。

本书作者网站(含官方勘误。怎么说呢,订正了好多汇编错误,好多都是立即数相关的)

http://www.charlespetzold.com/code/

时间: 2024-10-25 23:44:04

《CODE》读后笔记——第21~25章的相关文章

《CODE》读后笔记——第14~25章

反馈与触发器 振荡器不需要人的干涉即可自主且不断地实现断开和闭合.所有计算机都靠某种振荡器来使其他部件同步工作. 当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器.触发器具有记忆性,可以保持信息. 触发器: <code>书中常用的电路 振荡器 分频器 8位行波(异步)计数器 8-1选择器 3-8译码器 字节与十六进制 看完这一章,个人认为十六进制的出现应该就是为了要简单清晰的表示字节吧.四进制表示就只比二进制缩短了1倍,八进制实现不了8个位组成的字节,二百五十六进制太复杂. 在

《Code Complete》ch.25 代码调整策略

WHAT? 本章讨论程序性能调整问题.但是对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统经常死机常常比程序性能更加重要 WHY? 在程序设计这种文化中,编写出能够节省几微秒的代码可以证明你很酷-- HOW? Pareto法则 即80/20法则,指你可以通过20%的努力获取80%的成果 一些无稽之谈 在搞基高级语言中,减少代码行数可以加快代码执行速度 特定运算可能比其他的更快,代码规模也较小:在某个环境下提升程序性能的方法放到另一个环境中可能会损害程序性能.在调整代码的时候你实际

JavaScript高级程序设计(第三版)学习笔记22、24、25章

第22章,高级技巧 高级函数 安全的类型检测 typeof会出现无法预知的行为 instanceof在多个全局作用域中并不能正确工作 调用Object原生的toString方法,会返回[Object NativeConstructorName]格式字符串.每个类内部都有一个[[Class]]属性,这个属性中就指定了上述字符串中的构造函数名. 原生数组的构造函数名与全局作用域无关,因此使用toString方法能保证返回一致的值,为此可以创建如下函数: function isArray(value)

第25章 CSS3过渡效果

第 25章 CSS3过渡效果学习要点:1.过渡简介2.transition-property3.transition-duration4.transition-timing-function5.transition-delay6.简写和版本 CSS3的过渡效果,通过这个功能可以不借助 JavaScript来实现简单的用户交互功能. 一.过渡简介过渡效果一般是通过一些简单的 CSS动作触发平滑过渡功能,比如::hover.:focus.:active.:checked等.CSS3提供了 trans

Lua_第25章 调用 C 函数

第25章 调用 C 函数  扩展 Lua 的基本方法之一就是为应用程序注册新的 C 函数到 Lua中去. 当我们提到 Lua 可以调用 C 函数,不是指 Lua 可以调用任何类型的 C 函数(有一些包可以让 Lua 调用任意的 C 函数,但缺乏便捷和健壮性).正如我们前面所看到的,当C 调用 Lua函数的时候,必须遵循一些简单的协议来传递参数和获取返回结果.相似的, 从Lua 中调用 C 函数,也必须遵循一些协议来传递参数和获得返回结果.另外,从 Lua 调用 C 函数我们必须注册函数,也就是说

1.22 redis集群介绍21.23/21.24 redis集群搭建配置21.25 redis集群

21.22 redis集群介绍多个redis节点网络互联,数据共享所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为.支持在线增加.删除节点客户端可以连任何一个主节点进行读写 21.23/21.24 redis集群搭建配置场景设置:两台机器,分别开启三个Redis服务(端口)A机器上三个端口7000,7002,7004,全部为主B

设计模式@第25章:策略模式

第25章:策略模式 一.编写鸭子项目,具体要求如下: 有各种鸭子(比如 野鸭.北京鸭.水鸭等, 鸭子有各种行为,比如 叫.飞行等) 显示鸭子的信息 二.传统方案解决鸭子问题的分析和代码实现 传统的设计方案(类图) 代码实现-看老师演示 Duck 抽象类 package com.gjxaiou.strategy; public abstract class Duck { public Duck() { } public abstract void display();//显示鸭子信息 public

《CODE》读后笔记——第14~20章

14.反馈与触发器 振荡器不需要人的干涉即可自主且不断地实现断开和闭合.所有计算机都靠某种振荡器来使其他部件同步工作. 当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器.触发器具有记忆性,可以保持信息.各种触发器如下表: <code>书中常用的电路 振荡器 分频器 8位行波(异步)计数器 8-1选择器 3-8译码器 15.字节与十六进制 看完这一章,个人认为十六进制的出现应该就是为了要简单清晰的表示字节吧.四进制表示就只比二进制缩短了1倍,八进制实现不了8个位组成的字节,二百五

转载---编写高质量代码:改善Java程序的151个建议(第2章:基本类型___建议21~25)

阅读目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25:不要让四舍五入亏了一方 不积跬步,无以至千里: 不积小流,无以成江海. ---荀子<劝学篇> 回到顶部 建议21:用偶判断,不用奇判断 判断一个数是奇数还是偶数是小学里的基本知识,能够被2整除的整数是偶数,不能被2整除的数是奇数,这规则简单明了,还有什么可考虑的?好,我们来看一个例子,代码如下: 1 import java.util.Scanner; 2 3