【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!

本次笔记内容:
P29 计算机组成原理(29):第25分钟起
P30 计算机组成原理(30)

我的计组笔记汇总:计算机组成笔记

视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完

本节课对应幻灯片:

极其有趣的一节课。上一节我们把“控制器”这一单元结了。这节课开始,布置核心大作业,三周后完成。

这个视频是给清华CS一字班同学上的,因此估计上课时间是2013年秋。上这节课时已经第9周了。我提供的幻灯片时2019年秋的,但是二者差别很小。

这个大作业去年(2012年)第一布置,刘老师直接被“安排”到了人人网上,很逗。下面来看具体内容。


【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!

内容提要

  • 我们要做什么?
  • 我们已经有了什么?
  • 我们可以怎样去做?
  • 我们还能做什么?
  • 我们最后要交什么?
  • 具体时间安排

我们要做什么?

去年,刘老师上午布置了这个作业,零字班同学中午就把刘老师“送到”人人网上去了。很逗。

刘老师强调:我们做的是计算机,而非只跑指令的CPU。

实验任务

  • 支持指令流水的CPU
  • 使用基本存储和扩展存储以及输入/输出
  • 进行扩展

实验目标

  • 基本:能运行监控程序,并在监控程序中运行PROJECT 1的程序
  • 进阶:能运行Ucore,并在Ucore下运行应用程序
  • 有可供演示的应用程序(100分中最后20分)

20年前,做一个 MIPS CPU 还是一个很大的任务。国家 863 投了 800万+,计算机系配套了 800万+ ,最后做出了“清华芯”。

我们已经有了什么?

  • THINPAD硬件平台
    • FPGA
    • SRAM Memory
    • FLASH Memory
    • UART/USB/PS2/VGA/
  • MIPS32指令系统
  • 监控程序等辅助软件
  • 教材和实验指导书

教学计算机硬件平台

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 13 年的。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 19 年的。

硬件组成与结构

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 13 年的。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 13 年的结构。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 13 年的 CPU 。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是 13 年的 FPGA 管脚。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
这是 19 年的。

主要特点:

  • 搭载Xilinx Artix-7系列FPGA:XC7A100T
    • 100K LEs, 4.8Mb BRAM,28nm制程
    • 支持最新的Vivado设计工具
  • 两组SRAM内存,每组4MB容量、32位数据线
  • 8MB NOR Flash闪存
  • 外围接口:SL811 USB,DM9000网卡,TFP410 DVI图像输出
  • 板载控制芯片,支持在本地或远程完成实验

框架结构

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
上图是一个大概的数据通路,是一组同学的中期成果,不一定对。

内存访问

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
如上,监控程序地址的划分。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
内存访问概述如上。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
内存读时序如上。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
内存读参数如上。

此外,还需要注意各个内存写的时序。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
内存写时序如上。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
内存写参数如上。

由此考虑,CPU的主频是多少?

如何确定CPU主频?

  • 流水线要求每个机器周期完成一个步骤,包括存储器读/写
  • 多周期CPU也大都要求在一个步骤内完成存储器的一次访问
  • 完成一次存储访问的时间?
  • 如何实现?50MHz

串口访问

串行接口芯片8251
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
如上,起接收与发送是两个独立单元,因此是全双工的。
【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
8251结构框图如上。

方式命令字的格式

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
其命令字格式如上。

8251 串行接口芯片引脚

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!

接口状态寄存器的内容格式

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
如上,状态寄存器用于帮助判断:

  • 发送的字符是否已经发出?
  • 接收的字符是否已经接收?

THINPAD 串口连接方式

【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!
如上,现在已经基本没有独立的 8251 串口了,因此老师做了层 CPLD/UART 来进行抽象。

程序如何装入?

程序装入到 FLASH 中(建议装到 FLASH 中):

  • 采用提供的软件装入
  • CPU首先将其 boot 到 RAM1 中
  • 再从 RAM1 中运行

程序直接装入到 RAM1 中:

  • 直接用软件装入大 RAM1 中

基本步骤

  • 确定目标
    • 流水线、扩展方案、展示方案
    • 工作计划
    • 组内分工
  • 概要设计
    • 数据通路设计:每条指令在数据通路上的实现过程
    • 指令流程表:每条指令每个步骤所完成的功能
    • 流水段设计
    • 控制信号设计
    • 模块设计(各模块基本功能和接口)
  • 详细设计
    • 各模块编码实现
  • 编码实现
  • 模拟分析
  • 硬件调试
  • 总结报告

我们还能做什么

硬件:

  • 对流水线进行完善:结构冲突、数据冲突、控制冲突
  • 中断
  • 分时操作
  • 双机通信

软件:

  • 监控程序的完善
  • 有创意的应用
  • 性能分析和评价

总结

此外,新幻灯片里还存在设备状态的检查教程。

接下来三大节课都将与实验相关:

  • 老师再讲一下实验的具体内容;
  • 接下来两节课,同学展示自己的进展。