Bob Playground


Welcome to Bob‘s blog.


  1. 算法的性能分析——空间复杂度与时间复杂度

    算法(algorithm)是一组完成特定任务的有穷指令序列。可以使用空间复杂性和时间复杂性来评估算法性能。

    • [ 《数据结构》 ] Details->

  2. 实现 Y86 处理器 —— 流水线冒险与异常处理

    在上一章中,已经介绍了指令相关的两种形式:数据相关和控制相关。

    这些相关可能会导致流水线产生计算错误,称为 冒险(hazard)

    与两种指令相关对应,冒险也分为 数据冒险(data hazard)控制冒险(control hazard)

    • [ 《深入理解计算机系统》 ] Details->

  3. 实现 Y86 处理器 —— 流水线实现

    在 SEQ 的结构中,一条指令必须等到它之前的指令执行完毕,才能被执行。

    通过流水线技术,可以增加系统的 吞吐量(throughput),也就是单位时间内执行的指令数量。

    执行一条指令所花费的时间称为 延迟(latency)

    • [ 《深入理解计算机系统》 ] Details->

  4. 实现 Y86 处理器 —— 指令执行分析及顺序实现

    我们初步要实现的处理器是顺序的,即完全执行完一条指令才执行下一条指令。

    通常,会将不同的指令分解成相同的阶段序列,这样有利于简化处理器设计及充分利用硬件。

    下面是各阶段的简略描述:

    • [ 《深入理解计算机系统》 ] Details->

  5. 实现 Y86 处理器 —— 指令集体系结构

    指令被编码为由一个或多个字节序列组成的二进制格式。

    一个处理器支持的指令和指令的字节级编码称为它的 指令集体系结构(Instruction-Set Architecture, ISA)。

    定义一个指令集体系结构,包括:

    • [ 《深入理解计算机系统》 ] Details->

  6. 实现 Y86 处理器 —— 组合电路

    在硬件设计中,用电子电路来实现对位的运算,以及在各种存储器中存储位。

    大多数的现代电路技术都是用信号线上的高低压来表示不同的位值。

    在当前的技术中,逻辑 1 使用 1.0 V 左右的高电压表示,而逻辑 0 则是用 0.0 V 左右的低电压表示。

    • [ 《深入理解计算机系统》 ] Details->

  7. 实现 Y86 处理器 —— 需要的部件

    从本篇起,我们将自己实现一个 Y86 处理器。

    首先看一下为了实现 Y86 处理器,我们都需要哪些部件。

    我们已经知道,CPU 会逐条地执行机器指令。那么 CPU 是如何判断正在执行的指令是否执行完毕,继而可以开始执行下一条指令的呢?

    • [ 《深入理解计算机系统》 ] Details->

  8. Hexo 中扩展 Markdown 语法设置图片的大小

    在使用 Hexo 的过程中发现 Markdown 的原生语法貌似没办法设置图片的大小。

    在网上搜索了一下,貌似比较好的做法是:

    <img src="/image/test.jpg" width="50%" height="50%">
    

    不过我还是想用 Markdown 的原生语法,于是用我抠脚的 JS 写了一个。

    • [ 小工具 ] Details->

  9. 使用 Hexo - Huno 搭建个人博客

    Hexo 官网 提供了详细的文档。

    本文就一部分最主要的工作进行了记录。

    • [ 配置环境 ] Details->