当前位置: 首页 > news >正文

CPU,减少晶体管翻转次数的编码

背景

以4比特为单位,共16个数。仔细思考状态转换过程中的晶体管翻转次数。

0000
0001,1
0010,2
0011,1
0100,3
0101,1
0110,2
0111,1
1000,4
1001,1
1010,2
1011,1
1100,3
1101,1
1110,2
1111,1
0000,4

分析,例如,从1111到0000,晶体管翻转4次。
总共的翻转次数是30,平均30/16=1.875次。

创新

以下编码,可以使得翻转次数降低,在顺序递增的过程中。

0000→0
0001→1
0011→2
0010→3
0110→4
0100→5
0101→6
0111→7
1111→8
1110→9
1100→10
1101→11
1001→12
1011→13
1010→14
1000→15
0000→0

以上编码,晶体管翻转次数降为16,平均1次。
若按照递增循环,可以把晶体管翻转次数降低,从30次到16次,降低(30-16)/30=46.7%

总结

降低晶体管翻转次数,可以省电。
上述方案,可以在数字递增循环过程中,将晶体管翻转次数降到最低。

查表法完成四则运算

使用查表法的目的,同样是为了省电。
查表法使用大量的ROM,既然X3D可以堆叠cache,我们也可以堆叠ROM,而且ROM比cache省电,可以堆叠更多层。
1比特cache需要6个晶体管,而同等容量的ROM只需要1个晶体管。
总之,堆叠ROM的容量可以很大,使得CPU能够一次处理很多笔四则运算。
规定float和double格式时,还不流行多核。实际上,可以用多核并行运算,计算decimal数字,不再受位数的限制。
所以,新的CPU拥有极大的ROM,可以通过查表法同时完成许多笔四则运算,这N个整数核,大约可以同时完成N/2笔浮点数运算。N的大小取决于ROM的大小,和表的大小。

程序

该程序输出8比特的晶体管编码:

a=('00','01','11','10')def f(x,y,z,t,i):print(a[x%4],a[y%4],a[z%4],a[t%4],'->',i)x=0;y=0;z=0;t=0
for i in range(256):f(x,y,z,t,i)if i%4!=3:t=t+1if (i+1)%4==0:z=z+1if (i+1)%16==0:z=z-1if (i+1)%16==0:y=y+1if (i+1)%64==0:y=y-1if (i+1)%64==0:x=x+1if (i+1)%256==0:x=x-1
http://www.dtcms.com/a/294638.html

相关文章:

  • haproxy算法
  • LSTM学习笔记
  • unity小:webgl开发注意事项(持续更新)
  • 2025年7月Nature子刊-Adam梯度下降优化算法Adam Gradient Descent-附Matlab免费代码
  • CVE-2025-32463漏洞:sudo权限提升漏洞全解析
  • OpenLayers 快速入门(五)Controls 对象
  • 西安旅游行业从业者:凤凰新闻怎么发稿有哪些注意事项
  • 编程日常开发工具整理
  • 智能工具重塑光伏设计:精准、高效与科学的融合
  • 第二章 W55MH32 DHCP示例
  • 安卓项目--基于百度云的人脸识别考勤系统
  • 基于沁恒微电子CH32V307单片机使用
  • 前端项目下载发票pdf文件要求改文件名笔记
  • LLM指纹底层技术——模型压缩与优化
  • Windows安装git教程(图文版)
  • 批量剪辑矩阵分发系统源码搭建,支持OEM
  • 电机驱动-理论学习-FOC算法理解
  • [硬件电路-73]:模拟器件 - 什么是电路的信号振铃现象?其根本原因?如何解决?
  • 逆向入门(41)程序逆向篇-crackme
  • Rocky9.4部署Zabbix7
  • WebGIS 中常用公共插件
  • 星座占卜信息分享静态网站项目练习!
  • 【大模型文生图、文生音频实战Demo】基于Spring AI Alibaba和阿里百炼大模型实现文生图、文生视频
  • LeetCode 407:接雨水 II
  • 网络编程初识(详细易懂)
  • [强网杯 2019]高明的黑客
  • iOS加固工具有哪些?企业级团队协作视角的实战分析
  • 【浏览器插件冲突】Edge浏览器加载不出来CSDN创作者中心
  • SpringBoot07-数据层的解决方案:SQL
  • 【科研绘图系列】R语言绘制黑白填充等显著性标记条形图