0%

Overview(CMU-15-213)

程序如何运行,机器如何执行程序

  • 数字在计算机中如何表示(用有限的位组合形式表示在数域中无限扩张的数)

    • int类型(乘法和加法都有溢出的风险,但符合交换律
    1
    2
    计算机中表示50000*50000是负值
    计算300* 400 * 500 * 600是错误结果
    • float类型(浮点数取值范围极端以至于有些数字会消失)
    1
    取一个很大的数-他本身+3.14=3.14
    • 改变计算顺序:
    1
    1e20 + (-1e20+3.14)=0
  • 机器级代码的实现

    • 代码如何编程机器码
    • 如何在机器上执行
  • 分层存储系统

    • 数据在内存中如何布局,内存是如何访问的
  • 从程序角度增加其性能(低级优化)

    • 什么让程序运行更好
    • 什么会导致程序运行更差
  • 实现web服务器或者其他能力

阅读全文 »

网络文学的前世今生

看到这个封面,如果你看过这本书,我相信你的心中此时可能会是五味杂陈。
《坏蛋是怎样炼成的》这本书,是我看的第一本网络小说,也是留给我印象最深的一本书。我依然记得那是一本相当厚重的书(盗版实体书),8开的大开本,貌似有一千多页。和我今天每天要读的计算机类的书籍厚度大致相同,每当看到计算机类的书籍,我偶尔还是会想起那个抱着《坏蛋》疯狂阅读的年纪。
初次接触《坏蛋》是在初中的时候,就像前面说的,虽然具体的内容早已经忘记了,但是给我留下的印象却是我看过的小说中印象最深刻的。
我们今天探讨的并非《坏蛋》,而是承载《坏蛋》的载体——网络文学。

当今公认的网络小说的鼻祖,或者说是中国第一本网络小说——《第一次亲密接触》,于1998年发表于某BBS(论坛)。这本书一经连载,直接在网络上“卷起一片腥风血雨”,痞子蔡(本书作者)的知名度像一股热浪在网络上延烧开来,达到无国界之境。这本书,可以说是为后面网络文学的发展起到了直接促进的作用。

阅读全文 »

本文讲什么?

浮点数和定点数一样,都是计算机中数据的存储形式。定点数我们可以理解成纯小数或者纯整数,但是实际上在计算机中参与运算的数字并非都是定点数。比如,有些数据过大,比如2^100^这样的数据,如果写成二进制的形式,寄存器肯定是无法放下的。于是就有了浮点数这种数据。
本文主要讲述浮点数的概念、浮点数的规格化,以及浮点数的各种运算。

阅读全文 »

前言

这篇文章是整个《漫谈计算机组成原理》系列文章的最后一篇——中断系统。实际上,在《I/O系统》那一篇文章中,我们已经介绍过了中断系统,我想你大概也知道了中断的流程及中断的两种方式,如果你还不知道,就去翻翻前一篇文章《漫谈计算机组成原理(七)I/O系统》吧!
在这篇文章中,我们将细化的讲述中断系统的相关内容,带你全面的了解中断系统的组成、中断系统的工作流程及中断系统的意义。那就开始吧!

阅读全文 »

本文讲什么?

有一次,知乎上的同学问我:“为什么使用迅雷下载东西的时候,最后的百分之一总是那么慢呢?还有,为什么传输文件的时候,到最后的那一块也是那么慢呢?”
一看这位同学就是个善于发现之人,能成大事。
其实原因非常简单,对于迅雷来说,一般使用的是P2P(点对点)的传输方式,最后的百分之一时(也有可能是下载中的每个时刻),迅雷就把你作为了点对点中的一个点,让其他人从你这里下载资源,如果你下载完成了,那不就是不能明目张胆的这么干了吗,这个时候你只需要将任务暂停,然后重新开始,马上就下载完了;还有一个原因是迅雷正在进行文件的校验,这部分其实是涉及到计算机网络的内容了,今后我们会详细的讲这块的东西。
而对于文件传输的时候,最后的部分也会感觉到慢(很少见),是因为计算机传输比特流的过程中也会去校验文件,看看传过来的比特流是否发生错误。
所以,我们今天的主题是“数据校验方法”。我们讲两种校验方法,一种叫做“海明码(汉明码)校验法”,另外一种是CRC(循环冗余)校验。这两种有着不同的应用场景,下面就来开始正式的内容。

阅读全文 »

本文讲什么?

老样子,在正式开始介绍“高速缓冲存储器”之前,我们先来了解一下其相关的信息。

我相信,上面这张图你一定已经非常熟悉了,没错,这就是在本章绪论说的“存储器的层次结构”。
上一讲我们介绍了存储层次结构中的L4,即主存。继续向上看,你会看到L3、L2、L1都是高速缓冲存储器。那么究竟什么是高速缓冲存储器呢?那就要从“速度”这个关键词说起。
随着计算机硬件行业的不断进步,以因特尔为首的芯片企业造出了一代又一代的高速CPU, 可以说CPU处理数据的速度是越来越快。但是从图中我们能够看到,L0-L6的设备的速度是逐渐下降的,而且速度相差越来越大。
虽然说近年来的存储技术也有进步,但是照着CPU就差远了。这就造成了CPU和主存之间速度差距越来越大。高速缓冲存储器的存在就是为了尽可能的消除这种差距。
在这个存储层次结构中,虽然高速缓冲存储器分为三个档次,但是他们的作用都是相同的,都是起到一种桥梁的作用,不同的只是速度和造价。此外,L1的速度几乎和寄存器的速度相同。接下来,我们来看看高速缓冲存储器在CPU中的具体位置。

阅读全文 »

本文讲什么?

在计算机中,小数点并没有用专门的器件去表示,而是按照一种约定的方式,统一存储在寄存器单元中的。算数逻辑运算单元(ALU)是CPU的组成部分,负责算数和逻辑的运算。那么,ALU究竟是如何工作的呢?
这就是本文主要探讨的内容:

  • 什么是定点数?
  • 定点数的位移、加、减、乘、除运算是如何进行的?
    阅读全文 »

本文讲什么?

在上一篇文章中,我们主要讲述了定点数的加、减、乘运算,唯独没有讲解除法运算。原因有两个,一来上一篇文章的内容确实比较多,二来除法运算比乘法相对复杂。
所以,本文将从除法的来历讲起,然后讲除法运算的几种方法。

阅读全文 »

本文讲什么?

这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU。
而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分——I/O(输入输出)系统。
这篇文章主要讲述的就是I/O系统的组成以及I/O系统的工作原理,下面就正式开始I/O系统之旅吧!

阅读全文 »

《漫谈计算机组成原理》这个系列的文章共分为两个部分。第一部分围绕着计算机主机的外围硬件,包括总线、存储器、输入输出系统等,这部分的内容已经完成,感兴趣的可以看看之前的文章。之前凡是涉及到CPU的内容,除了第一篇简要的介绍过CPU的工作意外,其他文章都是默认将CPU作为一个“黑盒子”,不涉及到CPU内部的逻辑、运算等问题。而从这篇文章开始,我们将重点讲述CPU的逻辑、运算、信息处理等的相关知识点。接下来的几篇文章都是写计算机的运算方法的,第一篇文章我着重介绍几个概念——原码、反码、补码及移码,后面的文章就展开看CPU究竟是如何被用来计算的。好了,话不多说,开始后半部分的第一讲吧!

阅读全文 »