Giter Club home page Giter Club logo

computerorganization_buaa's Introduction

ComputerOrganization_BUAA

本仓库包含笔者从P0至P7的全部代码和部分testfile。

概述

  • 时间:2018年秋季
  • 学分:3学分
  • 课程教学目标:用工程方法开发符合工业标准且具有一定工程规模的流水线CPU
    • 能够编写一定规模的汇编语言程序
    • 能够开发具有数十条指令的全速转发流水线CPU
    • 能够开发支持流水线的中断系统
  • 考核方式:课下写project + 课上测试(出新题/修改指令集)

内容介绍

覆盖内容

数字电路

​ 门电路、组合电路、时序电路

语言

​ Verilog-HDL - 语法、数字系统硬件设计与验证

​ 汇编语言 - MIPS指令集、汇编程序解析及设计

工具

​ Logisim – 数字电路模拟器,具有直观友善的电路建模和仿真功能

​ ISE - 硬件描述语言模拟器,搭建功能型计算机,并仿真验证

​ MARS - MIPS模拟器,辅助MIPS汇编程序编写、调试,设计验证的黄金模型

课时安排

序号 项目名称 课下作业 课上测试 持续时间
pre 基础知识,Logisim ,汇编,Verilog-HDL 平台自学 选填题 5
P0 部件 及状态机设计(Logisim) 搭建CRC 校验码计算电路,ALU, GRF ,正则表达式匹配 Logisim 完成部件及FSM 设计 1
P1 部件 及状态机设计(Verilog-HDL) 实现splitter, ALU,EXT ,格雷码计数器,合法表达式识别 Verilog-HDL 完成及 部件及FSM 设计 1
P2 汇编语言 矩阵乘法、排序、回文串判断 选择题+ 编程题 1
P3 Logisim 开发期 单周期CPU 完成持 支持7 条指令的 单周期CPU 新增指令 1
P4 Verilog 开发期 单周期CPU 完成持 支持7 条指令的 单周期CPU 设计 新增指令 1
P5 Verilog 开发 流水线 线CPU(1) 完成持 支持10 指令线 流水线CPU 设计 流水线 工程化方法/新增指令 1
P6 Verilog 开发 流水线 线CPU(2) 完成持 支持50+ 指令线 流水线CPU 设计 流水线 工程化方法/新增指令 1
P7 中断系统 在 在P6 基础上支持中断 中断响应 2
P8 Verilog 开发MIPS 微系统 完成微型MIPS 系统设计;开发简单I/O;集成串口控制器,板级运行 现场测试 2

计组的第一个难关就是学习软件使用和学习新的编程语言(这也是Pre,P0,P1,P2的主要内容)。这门课程推荐使用的软件有Logisim(仿真电路),Mars(写汇编程序),ISE(写verilog)。基于对这三个软件的使用的学习,我们就可以用Logisim画出来一个单周期CPU以及用Verilog代码模拟出一个单周期CPU和一个流水线CPU,能够用汇编编写程序导入 CPU来验证其正确性,部分更加优秀的同学甚至可以将他们实现在FPGA板子上,成为一个真正意义上的CPU。在整个实验课推进的过程中,我们可以将理论课中理解不到位甚至有误解的CPU的组成以及CPU的工作细节的知识得以强化学习。也就是说,从整体上来看,北航的课程设计包含了数字电路基础与实验、汇编语言基础与实验、计算机组成原理实验三个部分,内容多但却很实用。

计算机组成,顾名思义,肯定与电路图有关,所以需要Logimsim来“画电路”,通过与非门和寄存器等实现逻辑电路。而大多数人之前都应该没有接触过(或接触很少)这种形式,因此上手可能比较困难,特别是用有限状态机实现斐波拉西数列时,会感觉无从下手。而Logisim实现有限状态机也作为P0的考察重点,大家必须重视!这里推荐大家将黑书(PPT也可)的有限状态机实例弄清楚,同时与他人多多沟通,多多交流。

Logisim其实只是一个辅助(最后一次考察在P3),它的目的是让你对电路有直观的理解,这样才能更好地使用Verilog编程语言来模拟电路。Verilog语法大体上和C比较像,在初学时可类比学习。但其实本质上差别很大,这个需要在学习过程中慢慢思考领悟。

汇编程序贯穿P2-P8,但掌握了编程思维之后学习汇编并不难,但编写汇编程序比较麻烦(可以先写C,再翻译)。

计组的第二个难关就是工程化**,特别是在搭建CPU时。由于工程量巨大(特别是P5这个难度飞跃的拐点),如果不用工程化**很容易出bug。因此需要模块化**等,还有一些方法,比如表格法,来帮助大家完成CPU的开发。同时应认真完成开发文档,这样不仅能做到对自己设计有数,还有可能找到潜在的bug。

一些课程经验

整个课程的测试从Pre开始,然后从P0到P8,共10个阶段的上机测试。一般从国庆假期之后开始Pre测试,用于检查三个工具的自学情况,考得如何对最终成绩无直接影响。紧接着P0到P8是进一步检验工具掌握情况以及CPU的设计情况,从Pre到P6的测试是每周向后推进一个的,也就是说,每周我们都要学习新解锁的教程,然后完成教程部分的课下测试,全部提交AC之后才有机会参加课上测试,而每次课下测试都是非常耗时间的,P3以及之后还需要我们每次课下设计都要写一个文档来说明自己的设计思路与设计过程,这部分的工作量也是可观的。以最典型的P5课下测试(搭建流水线CPU)为例,从搞清楚理论,到搭建出大框架,除去吃饭睡觉,相当一部分同学在这上面花费了几十小时的纯学习时间。如果课下没做完或者课上挂了,下周就无法做新的测试,而是需要继续进行上一个project的测试。所以能够一路从P0杀到P6的,都是学习能力和动手实现能力很强的大佬了。事实上,相当一部分同学因为跟不上进度最后是没有机会做P7和P8的。

计组在P6之前都是有规律可循的,特别是在做CPU时,课上新加的指令其实大同小异。但由于课下只有弱测,很难找到bug,因此要尽量自己构造数据(或写自动化)课下测试来保证没有问题,否则就要课上Debug。但到了P7,计组就变的玄学起来,而且也课上教程也保留了很大程度的自由性,因此也是一个难度飞跃的拐点。P7虽然与P6相比,要改的地方并不多,但坑点超级多,因此一定要与他人交流,沟通,把自己的想法等等发到讨论区大家一起找错!。最后是P8,听做了P8的同学说其实P8并不难,难的是到P8的过程。P8除了新加的TLB以外,最难的部分应该是综合时间过长,导致debug效率极低。但笔者并没有做P8,所以就不多作评价了。

还要提醒一句,P7和P8临近烤漆,一定要安排时间来期末复习(甚至可以放弃一些P,笔者在复习期末时看着做P8的同学非常惨,又要肝计组又要复习期末);也要注意理论课的学习,毕竟计组课设的学分并不大,其他的学科才是重头。

最后祝大家天天开开心心,在肝计组感觉压力大的话也别灰心丧气,累的话不妨休息一下,劳逸结合才能更好地提高学习效率~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.