计算机组成原理之处理器(单周期)

引言

处理器的实现方式决定了时钟周期长度和CPI。实现方式有单周期与流水线,本篇谈谈单周期处理器。

目前CPU的频率一般是3GHZ/4GHZ,但是频率是有极限值的,受cycletime影响

基本的RISC-V实现

  • 存储指令:ld,sd
  • 算术逻辑指令 :add ,sub,and,or
  • 条件分支指令:beq

实现每条指令的前两个步骤是一样的:

  • 程序计数器发送到指令所在的存储单元,并从其中取出指令
  • 根据指令的某些字段选择要读的一个或两个寄存器

所有类型的指令在读取后都用ALU(存储器访问,算术逻辑,条件分支比较)

单周期CPU概览

file


流程介绍

所有的指令都用程序计数器获得指令在指令存储器中的地址

  • 取到指令后,指令的对应字段知道要使用的寄存器操作数。
  • 寄存器操作数一被取出,即可用于计算存储器地址(load指令或store指令)、计算算术运算结果(定点算术逻辑指令)或进行相等检验(分支指令)。
  • 如果是算术指令,ALU的结果要写回寄存器。
  • 如果是存取操作,ALU的结果黄作为存储器地址以及存储来自寄存器的值,或将存储器数据加载到寄存器中。
  • 对于分支指令ALU的输出来觉得下一条指令的地址,这个地址可能来自PC和分支偏量相加的加法器,也可能来自PC+4的加法器。

时钟同步方法

一般用边沿触发来到达时钟同步的目的。这也决定了要在一个时钟周期内读出寄存器的值。

建立数据通路

数据通路单元

数据通路单元是一个用来操作或保存处理器中数据的单元。在RISC-V实现中,数据通路单元包括指令存储器、数据存储器、ALU和加法器。

如果一个单元内部有存储功能,它就包含状态,称为状态单元

file

程序计数器

包含当前程序正在执行指令地址的寄存器,是一个64位的寄存器,在每个周期结束后被写入。

存储单元

寄存器堆

处理器的32个通用寄存器位于寄存器堆(register-file)的结构中

file


数据存储单元

读写信号是相互独立的,但仅有一个可以在任意给定的时钟上有效

为实现beq指令,需要将PC值与符号扩展后的指令偏移量相加得到分支地址

file


分支指令

  • 指令系统结构规定了计算分支目标地址的基址分支是所在地址
  • 将偏移量左移以为以表示板子为单位的偏移量,这样的偏移有效范围扩大两位

file


ALU控制

”load/store = add“ “branch = sub" "R type ~ depend on opcode"

file


file


控制信号

file

file


数据通路操作

R型

  • 取出指令,PC自增
  • 从寄存器堆读两个寄存器,对从寄存器堆读出的数据进行操作
  • 根据部分操作码确定ALU的功能,对寄存器堆读出的数据进行操作
  • 将ALU的结果写入寄存器堆中的目标寄存器

file

load指令

步骤:

  • 从指令存储器中取出指令,PC自增
  • 从寄存器堆中读出对应一个寄存器的值
  • ALU将从寄存器堆中读出的值和符号扩展后的12位(偏移量)相加
  • 将ALU的结果用作数据存储器的地址
  • 将从寄存器读出的数据写入寄存器堆

file

beq指令

  • 从指令存储器中取出指令,PC自增
  • 从寄存器堆中读出两个寄存器x1和x2
  • ALU将寄存器堆读出的两数相减。PC与左移一位、符号扩展的指令中的12位相加,结果是分支目标地址
  • ALU的零数超出决定将哪个加法器的结果写入PC

file

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/132357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python3GUI--QQ音乐By:PyQt5(附下载地址)

文章目录 一.前言二.展示0.播放页1.主界面1.精选2.有声电台3.排行4.歌手5.歌单 2.推荐3.视频1.视频2.分类3.视频分类 4.雷达5.我喜欢1.歌曲2.歌手 6.本地&下载7.最近播放8.歌单1.一般歌单2.自建歌单3.排行榜 9.其他1.搜索词推荐2.搜索结果 三&#x…

第四节(2):修改WORD中表格数据的方案

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…

容器网络-Underlay和Overlay

一、主机网络 前面讲了容器内部网络,但是容器最终是要部署在主机上,跨主机间的网络访问又是怎么样的,跨主机网络主要有两种方案。 二、 Underlay 使用现有底层网络,为每一个容器配置可路由的网络IP。也就是说容器网络和主机网络…

Spring Boot(二)

1、运行维护 1.1、打包程序 SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。 mvn package 打包后会产生一个与工程名类似的jar文件,其名称是由模块名版本号.jar组成的。 1.2、程序…

Docker容器网络

一、Docker网络 Docker网络有下面4种配置类型,用的比较多的是Bridge: Null(–netNone) 把容器放入独立的网络空间但不做任何网络配置;用户需要通过运行 docker network 命令来完成网络配置。 Host 使用主机网络名空间,复用主机网…

万字详解Linux内核内存规整!超详细!

1.前言 伙伴系统作为内核最基础的物理页内存分配器,具有高效、实现逻辑简介等优点,其原理页也尽可能降低内存外部碎片产生,但依然无法杜绝碎片问题。外部碎片带来的最大影响就是内存足够,但是却无法满足内存分配需求,…

Spring事务一网打尽

Spring事务一网打尽 什么是事务首先说一个坑Spring 中的事务两种用法三大基础设施编程性事务TransactionManager 实现编程性事务TransactionTemplate 实现编程性事务 声明式事务XML配置声明式事务注解配置声明式事务注解XML混合配置声明式事务 什么是事务 这里要额外补充一点&a…

docker主备节点数据同步

主备节点挂载 在生产环境中,赋予一个docker操作系统的权限是一件不安全的事,在不具有系统操作权限的情况下,主备机无法通过nfs进行挂载。此时,可借助数据卷进行挂载 创建两个数据卷 docker volume create vol1 docker volume cr…

openstack部署后实战

分布式部署规则 1、平常都是两台Node安装OpenStack平台,那如果想分布式部署该怎么做?比如:部署两台Nova服务,一台单独的Neutron服务,一台单独的存储节点等。 整体思想: 如果想要部署两台Nova服务&#xf…

vue3 使用element plus 打包时 报错

vue3vitetselementPlus中运行正常打包出错 能正常运行,但是打包出错 解决打包时出现导入element plus相关的爆红,导致无法打包的问题 如若出现类似于:Module ‘“element-plus”’ has no exported member ‘ElMessage’. Did you mean to…

94.二叉树的中序遍历

描述 : 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 题目 : LeetCode 94.二叉树的中序遍历 : 94. 二叉树的中序遍历 分析 : 这个代码还是很好写的 ...... 解析 : /*** Definition for a binary tree node.* public class TreeNode {* int val;…

前端开发项目中使用字体库

开发中有些项目要求使用固定的字体,这就需要项目中使用字体库。 首先需要下载字体库 将下载的字体文件放进项目中 在项目代码样式文件中定义字体 font-face {font-family: "Tobias-SemiBold";src: url("./assets/font/Tobias-SemiBold.ttf"…

Gogs安装和部署教程-centos上

0、什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windo…

「题解」环形链表的约瑟夫问题

文章目录 🍉题目🍉解析🍌创建环形链表🍌释放指定节点🍌其他思路 🍉写在最后 🍉题目 🍉解析 题目的意思就是从环形链表的第一个节点开始数,数到第 m 的时候释放对应的节点…

CMake教程--QT项目使用CMake

CMake教程--QT项目使用CMake Chapter1 CMake教程--QT项目使用CMake1. Basic Cmake Based Project2. Executable VS Library3. Every module has its own CMakeList.txt in its folder3.1 不推荐的做法:3.2 推荐的做法 4. 强制以Debug, Release, RelWithDebInfo, Min…

Mac安装与配置eclipse

目录 一、安装Java:Mac环境配置(Java)----使用bash_profile进行配置(附下载地址) 二、下载和安装eclipse 1、进入eclipse的官网 (1)、点击“Download Packages ”​编辑 (2)、找到macOS选择符合自己电脑的框架选项…

人工智能基础_机器学习023_理解套索回归_认识L1正则---人工智能工作笔记0063

然后上一节我们说了L1,L2正则是为了提高,模型的泛化能力, 提高泛化能力,实际上就是把模型的公式的w,权重值,变小对吧. 然后我们这里首先看第一个L1正则,是怎么做到把w权重变小的 可以看到最上面是线性回归的损失函数,然后 L1可以看到,这个正则,就是在损失函数的基础上给损失…

轻松按需缩放图片像素——批量处理图片,满足不同需求!

在图片使用过程中,我们经常需要按照不同的要求调整图片的像素大小。如果一张一张地手动调整,不仅耗时而且容易出错。这款软件可以帮助您轻松实现批量处理图片,按需缩放图片像素,让您的图片管理更加高效、便捷! 第一步…

Vuex持久化插件

Vuex数据默认是存储在内存中的,当然我们也可以将它存储在Local Storage,也可以指定某些数据存储在Local Storage 这样我们就用到了Vuex持久化插件vuex-persistedstate 安装vuex-persistedstate插件 npm install vuex-persistedstate --save 案列&#x…

MPSO-WPA

MPSO-WPA算法 DCAP means ’ discretized Cauchy’s argument principle’ 辅助信息 作者未提供代码