前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软硬件融合技术内幕 终极篇 (7) —— 节约成本的高招

软硬件融合技术内幕 终极篇 (7) —— 节约成本的高招

作者头像
用户8289326
发布2023-02-25 14:07:53
6360
发布2023-02-25 14:07:53
举报
文章被收录于专栏:帅云霓的技术小屋

在前几期,我们介绍了CPU是如何执行各类逻辑指令,并识别代表各指令的机器操作码的。

在CPU中,各类运算指令的执行结果最终会被送到内存中。内存的正规学名应当为随机存取存储器(Random Access Memory),缩写为RAM。之所以使用“随机存取存储器”称呼这个部件,是因为RAM具备这样的特性:无论从任何地址读取和写入,都可以直接完成。换句话说,只需要对RAM输入地址和读出指令,就可以读取地址指向的数据。

我们在《软硬件融合技术内幕 基础篇(3) —— CPU外面有什么? (中)》里面提到过RAM对外的输入和输出信号特点:

如图,CPU向A0-A14引脚发出地址信号后,如发出的是写信号,则RAM芯片从I/O0-I/O7上接受数据并执行写入,如发出的是读信号,则RAM芯片读出存储单元的内容,并从I/O0-I/O7上送回CPU。也就是说,RAM的最小分配单位为1bit的存储单元。

在前期《软硬件融合技术内幕 终极篇 (5) —— 中华文明的瑰宝》里面, 我们提到,可以利用D触发器实现寄存器。那么,是不是将足够多的寄存器组合起来,并通过上一节提到的译码器,就可以实现RAM芯片了呢?

我们来看一看D触发器的电路结构:

如图,D触发器由1个非门,2个与门和2个或非门构成。

非门的电路实现如下图:

一个非门需要2个晶体管实现;

如图,一个与门需要6个晶体管实现;

一个或非门需要4个晶体管实现;

我们通过简单的算术运算就可以发现,一个D触发器 (D Type Flip-flop),需要:

2*1 (1个非门)+ 6*2(2个与门) + 4*2 (2个或非门) = 22个晶体管。

显然,这会需要较大的芯片面积,也会提高设计和制造成本。

实际上,经典的SRAM设计不会使用触发器来构造,而是使用下图中的6-transistor Cell设计:

如图,VDD为电源电压,M1/M2和M3/M4是两对互补的三极管对,构成两个反相器。M1/M2的输出和M3/M4的输入互联,而M3/M4的输出又和M1/M2互联,这样,两个反相器的状态可实现互锁。只有WL(Word Line)为低电平的时候,才允许BL(Bit Line)的输入改变两个反相器的状态。如WL为高电平,BL作为输出线,输出SRAM存储单元的内容。

也就是说,BL最终是连接到CPU的数据引脚的,而WL则需要将地址线信号进行译码后分到各个单元。

我们发现,SRAM的特点是工作速度快,只要地址线和读写信号就绪,立即可以完成读写操作,其延迟为门电路的延迟,可做到纳秒级别。但是,SRAM每个bit需要6个晶体管实现,成本较高。

因此,工程师们发明了另一种RAM,叫做DRAM。

DRAM的每个Cell只有一个晶体管和一个电容器。如图,在Wordline为高电平时,在bitline上可以读取电容器的状态(充电或放电),而Wordline为低电平时,bitline的状态可以决定电容器的状态。

显然,与SRAM相比,DRAM大大减少了晶体管数量和电路面积,也就是降低了成本。但是,DRAM也有一些问题:

  1. 读取电容器状态需要从电容器中取走一些电荷,读取的次数如足够多,会使得电容器的电压低于0/1的数字信号阈值;
  2. 电容器本身也会有一定的漏电流;

如何解决这些问题呢?

请看下期。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档