0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单周期CPU是什么意思呢

冬至配饺子 来源:天奇工作室 作者:LRC 2022-08-07 10:21 次阅读

CPU又名中央处理器,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。Logisim是一款逻辑电路设计仿真软件,我们可以在这个软件上面绘制各种逻辑电路,当然也包括CPU。

电脑中有intelAMD、Apple的CPU,手机中也有华为、高通、Apple的SOC,每次我研究这些他们设计的硬件时,总是觉得研究得不能很深入,往往只是看看官网参数和一些评测数据罢了。但是有些时候,总是有那么些不合常理的存在让我对CPU的认知一次又一次地被刷新。半年前是AMD(他们的笔记本CPU性能竟然直逼台式机),几个月前是Apple(他们的15W的M1芯片竟然砍倒一片几十W乃至几百W的台式机CPU,核显更是剑指独显)。这使我很烦躁,因为只是在外头看个热闹,很多原因我不能探明。所以就有了以下的一切。

这是第一章节《单周期CPU》

下面直接上图:

poYBAGLvISaALZZLAAG7FI3XMvg377.png

这便是该CPU全貌了

左上的部分是取指单元,其作用是从指令内存中取出指令。右上是译码单元,其作用是把指令所需操作翻译成电路的控制信号。右下是计算单元,通过调整对应的控制信号可以进行两数四则运算,并且可以访问数据内存,读取或者写入对应的数据。图中有深绿、亮绿和黑色的线,深绿色意味着这条线的电压是0V,亮绿色则为1V,黑色是因为每根黑色线都由若干根深绿或亮绿线组成,所以统一显示成黑色。

这个CPU采用自己瞎编指令集(ISA),属于精简指令集。与复杂指令集的区别在于它精简……之所以没有使用别人的指令集是因为我还在学习,下一次更新会采用RISC-V的开源指令集。有人可能会觉得难道自己造指令集不好吗?好又不好。这个问题我先挖个坑放着,有空我再讲。

字长为16位宽,意味着每次可以做16位的二进制运算,也就是最大2的16次方(65536)的运算,可以寻65536的内存地址。目前主流在32位和64位,只有少数单片机还在用16位,下次更新会更到32位。可能有人会有疑惑,如果我要计算的数字是天文数字呢?你就是64位也不够怎么办?首先,我们可以多做几次运算,这个可以通过专门的计算器程序来实现。(求积分的软件都有这个不算什么),其次可以使用浮点运算。但是我这个CPU没有浮点运算单元。(滑稽脸)这个挖个坑以后讲。

单周期(single cycle),每个时钟周期只能做一次运算。难道还能做好多次吗?能的,那就是流水线或者超标量技术甚至多核心。级数越高的流水线每个时钟周期可以做越多次的运算。五级流水线是最经典的流水线级数,当下主流的CPU的流水线级数都在8-15之间,也有20多的超流水线。但是流水线不是越深越好,凡事都有个度。再挖个坑,以后讲。

仅具备简单加减乘除的运算功能,当然也可以写个开方或者幂程序来支持高级运算。目前大多数的复杂运算也都是基于程序来实现的,直接固化在硬件电路中的也比较少见。据我所知,intel有把开平方写在指令集和硬件电路中,这样的好处是可以更快地求得结果,减少中途程序的调度过程。下一次更新会增加好多个运算电路,同时砍掉乘除,因为RISC-V中的RC32I不支持乘除指令,所以下次先砍掉。

该CPU一共有4个寄存器,没有缓存。相比之下,目前的CPU有几十到几百个寄存器,以及数kb的缓存。这个也会在下次更新补足到32个的。

这个CPU的解码部分也很有趣。我参考了x86的微指令设计。什么意思呢,就是正常的解码电路都是靠硬件逻辑解码硬解出来的,我这个不一样,是像查字典一样查出来的。这个字典就是图右上部分的ROM。这样的好处是不用设计电路了,实际电路生产中,如果电路设计有问题就得从头再来,再设计再生产。但是如果是我这种设计方式,改改ROM里的数值就行了,无法是给个软件升级。坏处也有,就是ROM实现方式占地太大,并且速度慢,功耗高。不过如果是在FPGA中大家都一样。FPGA我就再挖个坑吧。

对了,这个CPU有个bug,就是立即数(直接在程序中给明的数)不能直接参与运算,本来实现之初是有考虑到的,这个改也不难,但是现在忙着设计第二代,算了,留点遗憾才是完美。


审核编辑:刘清


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 逻辑电路
    +关注

    关注

    13

    文章

    468

    浏览量

    42191
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10428

    浏览量

    206516
  • 中央处理器
    +关注

    关注

    1

    文章

    109

    浏览量

    16396
收藏 人收藏

    评论

    相关推荐

    TLE9879电阻方案驱动BLDC如何配置一个周期内采样两次?采样时间如何触发?

    TLE9879电阻方案驱动BLDC 如何配置一个周期内采样两次?采样时间如何触发?
    发表于 02-19 07:56

    ADuC7060一个指令周期为几个机器周期?一个机器周期为多少个振荡周期

    假定使用内部32.768Khz振荡频率,倍频至10.24MHZ,内核频率为一分频即10.24MHZ,那么一个指令周期是多少?一个指令周期为几个机器周期?一个机器周期为多少个振荡
    发表于 01-15 07:22

    占空比什么是频率,什么是周期

    占空比(Duty Cycle)是指一个周期内,信号处于高电平的时间占整个周期的比例。通常用百分比表示,占空比越高表示信号处于高电平的时间越长。 频率是指一个信号的周期性重复发生的次数,在每一次
    的头像 发表于 12-18 14:41 1169次阅读

    AT32F系列TMR周期模式的使用方法

    AT32F系列周期模式演示AT32F系列TMR周期模式的使用方法。
    发表于 10-27 06:58

    TMR周期模式CVAL值从1开始计数的解决方式

    TMR 处于周期下,当 TMR 的 TMRx_PR 寄存器设置为奇数,且 TMRx_DIV 设置为 0 时,向上溢出更新中断,此时 TMRx_CVAL 会在第二次更新中断后从 1 开始计数,
    发表于 10-20 08:17

    周期cpu的设计思想是什么?怎样实现cpu多流水线?

    周期cpu的设计思想是什么?怎样实现cpu多流水线? 多周期cpu的设计思想是针对传统的单周期
    的头像 发表于 10-19 16:53 1394次阅读

    周期cpu和多周期cpu的区别 多周期cpu和流水线的区别

    周期cpu和多周期cpu的区别 多周期cpu和流水线的区别  单
    的头像 发表于 10-19 16:53 5959次阅读

    英飞凌TC3XX系列多核MCU学习笔记(2)

    STM是为需要高精度和长周期CPU系统定时应用而设计的。
    发表于 09-19 09:56 932次阅读
    英飞凌TC3XX系列多核MCU学习笔记(2)

    e203的指令周期是多少

    定时器没法做到微秒级的延时,那么软件延时可以做到微秒级么,e203的指令周期是多少
    发表于 08-16 07:03

    E203处理器内核,mdv模块虽然需要多个周期执行,但是仍然被视为是周期指令?

    多个周期执行,但是仍然被视为是周期指令?这样的话和其他的周期指令不就会产生数据冲突了吗? 为什么要这么设计
    发表于 08-12 06:11

    STM32G4 HRTIM FAULT有没有使用硬件周期性触发的用法

    1. HRTIM FAULT功能用下来只能次触发,触发后使用软件复位。那么有没有使用硬件周期性触发的用法(即触发后立即复位,类似C2000中的TripZone)?想用来做逐周期的保
    发表于 08-07 08:56

    PLC开关量输出接口有哪几种类型?

    PLC 的扫描过程包含内部处理、通信服务、输入处理、程序执行、输出 处理 五个阶段,这五个阶段扫描一次所需的时间称为扫描周期。扫描周期CPU 运行速度、 PLC 硬件配置和用户程序长短有关。
    发表于 05-16 15:12 958次阅读

    芯的can光纤中继器使用起来有何优势

    芯的can光纤中继器使用起来有何优势
    发表于 05-09 10:43

    请教一下大神proteus如何调一个周期为200ms的方波

    请教一下大神proteus如何调一个周期为200ms的方波
    发表于 04-26 15:48

    电源运放输出接薄膜电容有什么作用

    电源运放输出接薄膜电容有什么作用
    发表于 04-26 11:10