《34.1 A 28nm 83.23TFLOPS/W POSIT-Based Compute-in-Memory Macro for High-Accuracy AI Applications》(一)

以下是对提供论文《34.1 A 28nm 83.23TFLOPS/W POSIT-Based Compute-in-Memory Macro for High-Accuracy AI Applications》的分析:

1. 论文的主要内容和研究方向

本文提出了一种基于 POSIT 格式的 计算-存储一体化(CIM)宏结构,该结构旨在 高精度AI应用 中提高能效和计算精度。通过采用 POSIT数据格式,该研究提出了一种新的方法,能够在减少能耗的同时,保持与传统浮点格式(如FP32/FP16)相似的训练和推理精度。该研究的重点是:

  • 克服 POSIT 数据格式的动态特性,提出解决方案以提高 CIM 的能效和资源利用率。
  • 提出了三项创新技术:双向规程处理单元(BRPU)关键位预计算与存储(CPCS)CIM单元循环交替计算调度单元(CASU),这些技术有效解决了在 POSIT 计算中遇到的挑战。

2. 研究方法介绍

论文提出了一种数字 POSIT CIM宏结构(DP-CIM),具有以下关键创新:

  • BRPU:通过使用移位和连接逻辑替代复杂的编码解码逻辑,从而减少了 规程处理能量,节省了 40.3% 的能量。
  • CPCS:利用 空闲位 来优化 CIM 单元的利用率,通过在每个周期内执行双位 MAC 操作,提升了 CIM 单元的利用率 63%
  • CASU:当两个位串没有重叠时,CASU使用 按位或 操作替代 加法,从而节省了 56.9% 的加法器能量。

整体架构包括 16个CIM核心16个加法树和一个 28kB全局SRAM。该架构通过优化数据处理和减少能量消耗来实现高效计算。

主要解决的挑战:

  • POSIT动态位宽的尾数与CIM中固定宽度的权重存储发生冲突。
  • 在尾数没有重叠位时,全加器内的切换操作冗余。
  • 在CIM环境中需要高效的 规程处理位级优化

3. 研究结果分析

DP-CIM处理器能效为83.23 TFLOPS/W,相比之前的工作提高了 21%,并且在 ResNet18、GPT-2 和 ViT-B 等模型的训练中,节省了 8.81倍 的能量。能效的提高主要得益于以下几点:

  • 规程处理的 编解码逻辑BRPU 替代,减少了能耗。

  • CASU 使用按位或操作来减少加法器树的能量消耗。

  • CPCS 提供双位 MAC,提高了 CIM单元的利用率

  • 测量结果:DP-CIM处理器的功耗范围为 5.5mW到237mW,频率为 78-419MHz,电压为 0.55-1.0V

  • 加速效果:相比于之前的设计,处理器达到了 49% 的加速,得益于 CPCS 能够在每个周期执行双位MAC。

4. 论文出处

该论文发表于 2024 IEEE国际固态电路会议(ISSCC 2024),这是半导体与电路设计领域的顶级会议,属于 CCF A类会议,具有较高的学术和行业影响力。

5. 开源代码

论文中没有提到该研究相关的开源代码或代码库。因此,目前没有关于该 CIM宏结构POSIT计算 方法的开源代码。


计算-存储一体化(CIM)宏结构 是一种集成了计算功能和存储功能的电路结构,常用于加速高效计算的应用,如人工智能(AI)推理与训练。在传统的计算架构中,计算单元(如处理器)和存储单元(如内存)是分开的,需要频繁地进行数据传输。然而,在 CIM 架构中,计算单元与存储单元被紧密集成到同一个芯片上,允许数据直接在存储单元中进行计算,从而减少了数据传输的延迟和能量消耗,提高了计算效率。

CIM宏结构的关键特点和优势:

  1. 计算与存储集成

    • 在传统计算架构中,计算单元(如CPU或GPU)和存储单元(如DRAM或SRAM)是分开的。数据必须从存储器中读取到计算单元,然后进行处理,再将结果写回存储器,这个过程需要大量的能量和时间。
    • CIM架构将计算单元和存储单元合并在一起,使得数据能够直接在存储器中进行计算,减少了数据传输的需要,从而节省了能量和加快了计算速度。
  2. 能效和带宽优化

    • CIM架构通过将计算任务转移到存储位置,极大地减少了内存访问的带宽需求,并减少了通信和数据传输过程中产生的能量消耗。
    • 通过减少内存访问的频率,CIM提高了整体能效,特别适合于需要高带宽、高并发和低功耗的应用,如AI处理、大规模数据分析等。
  3. 硬件架构

    • CIM系统通常包含多个 CIM核心,每个核心内有多个 CIM单元,这些单元用于处理存储在内存中的数据。
    • 每个 CIM单元 通常包括计算和存储功能,比如加法、乘法操作单元,同时也可以执行存储器中的数据加载和存储操作。
  4. 应用领域

    • CIM广泛应用于 人工智能(AI)处理器 中,尤其是在 深度学习神经网络加速 上,由于这些应用需要大量的数据计算,而数据计算的过程往往是重复的,CIM能够显著提高效率。
    • CIM也用于 图像处理视频编解码信号处理 等领域,它可以加速计算并提高处理速度,减少功耗。

CIM宏结构在论文中的应用:

在论文《A 28nm 83.23TFLOPS/W POSIT-Based Compute-in-Memory Macro for High-Accuracy AI Applications》中,CIM宏结构被设计用于支持基于 POSIT 格式的计算,这种格式具有动态位宽,可根据数据的不同分布自适应调整位宽,从而在保持精度的同时减少能耗。

该论文中的 CIM宏结构 包含以下几个关键部分:

  • BRPU(双向规程处理单元):优化了规程的处理过程,减少了额外的功耗。
  • CPCS(关键位预计算与存储):利用空闲位进行计算,增强了CIM单元的利用率,允许每个周期内执行双位MAC(乘加)操作。
  • CASU(循环交替计算调度单元):通过替代尾数的加法操作为按位或操作,节省了加法器的能量,提高了CIM的计算效率。

通过这些创新,CIM宏结构在处理AI计算任务时大大提高了计算效率,同时显著降低了功耗。

总结来说,CIM宏结构 是一种通过集成计算和存储单元来优化数据处理过程的架构,能够显著提高计算效率和能效,特别适合在高性能计算和AI领域的应用。


CIM(计算-存储一体化,Compute-in-Memory)哈佛架构(Harvard Architecture) 并不矛盾,它们是两种不同的计算架构思想,但可以在某些情况下互相补充。

哈佛架构

哈佛架构是一种计算机体系结构,其中 指令存储数据存储 被分开,即指令存储和数据存储使用独立的存储单元。这种结构的优势在于它允许 并行 访问指令和数据,从而提高处理速度。哈佛架构的主要特点是:

  • 指令和数据分开存储,通常有独立的内存总线,使得指令和数据可以同时读取。
  • 提供更高的吞吐量和速度,尤其适用于实时处理和嵌入式系统。

哈佛架构的例子包括很多 嵌入式处理器,例如 DSP(数字信号处理器),以及一些专用的处理器架构。

CIM(计算-存储一体化)

CIM是一种将计算单元和存储单元集成在一起的架构,使得数据可以直接在存储位置进行计算,从而避免了传统架构中计算单元和存储单元之间的频繁数据传输。CIM的优势包括:

  • 降低了数据传输的延迟和功耗,因为计算和存储不再分离。
  • 提高能效和带宽,特别适用于需要大量计算的应用(如深度学习、图像处理等)。

CIM架构常见于需要高效能和低能耗的应用,尤其是在 AI加速器神经网络处理单元 中。

两者的关系与兼容性

虽然 CIM哈佛架构 看似不同,但它们可以共存,并且并不矛盾。原因如下:

  1. 不同的层次与应用场景

    • 哈佛架构主要是一种 硬件体系结构 的设计理念,强调内存分离,旨在优化指令和数据的访问效率。
    • CIM主要是一种 计算架构,其目标是将计算单元与存储单元合并,以减少数据传输,提高能效。它更侧重于 数据处理 的方式。
  2. 哈佛架构中也可能包含CIM思想

    • 在哈佛架构的计算单元中,存储单元可以是一个传统的内存模块,也可以是一个集成了计算单元的存储模块,即 CIM。因此,在具有哈佛架构的处理器中,可以实现将计算与存储一体化的设计。比如,在专用的 AI 加速器中,可能会同时采用哈佛架构来优化指令与数据访问效率,同时采用CIM来优化计算效率。
  3. 互补性

    • 哈佛架构和CIM的结合可以使得系统在数据存取和处理上都达到更高的效率。例如,哈佛架构可以确保指令和数据的高速并行访问,而CIM可以在存储层面上进行计算,减少数据传输带来的能耗和延迟。

总结

  • 哈佛架构CIM 并不矛盾。它们分别从不同的角度优化计算机系统的性能。
  • 哈佛架构 主要聚焦于存储的分离和访问效率的提升,而 CIM 侧重于减少存储与计算之间的传输开销,提高能效。
  • 在一些高效能计算需求(如AI加速)中,二者可以结合使用,发挥各自的优势。

在这篇论文《A 28nm 83.23TFLOPS/W POSIT-Based Compute-in-Memory Macro for High-Accuracy AI Applications》中,POSIT 被用于 CIM(Compute-in-Memory)宏结构的核心数值表示和计算格式,替代传统的浮点数(如FP16/FP32),以降低功耗、提高能效,并保持高精度。


POSIT 在论文中的具体使用方式

论文中提出的 DP-CIM(Digital POSIT-based CIM)宏结构,将 POSIT 作为主导数据表示和计算格式,应用于整个计算链路,包括权重存储、输入数据格式转换、乘加计算以及加法器树的能量优化。

以下是详细说明:


1. 数据表示格式选用 POSIT

在原文位置【页码567左栏第1段】提到:

“The emerging POSIT data format, exploiting dynamic bit width that adapts to varied data distributions, can use a low bit width to achieve nearly the same training and inference accuracy as high bit width FP (POSIT8 ≈ FP16 and POSIT16 ≈ FP32)...”

✅ 解释:

  • 该系统使用 POSIT8(8位)代替 BF16/FP16,用更小位宽获得类似精度;
  • 提升了存储效率和计算能效。

2. POSIT 编码/解码单元嵌入

在图 34.1.2 的描述中提到(页码567右栏):

“When loading data to DP-CIM, the FP-to-POSIT encoder transfers the FP data to POSIT format for storage... a POSIT-to-FP decoder...”

✅ 解释:

  • 系统设计了 FP-to-POSIT encoderPOSIT-to-FP decoder
  • 所有输入数据(如权重、激活)在进入 CIM 核心之前,都会先编码为 POSIT 格式。

3. BRPU:优化 POSIT 中的 Regime 处理

在页码567右栏:

“a bi-directional regime processing unit (BRPU) that replaces the complicated codec logic... saving 40.3% of regime processing energy.”

✅ 解释:

  • POSIT 中的 Regime 部分是动态位宽编码(如11110、00001);
  • BRPU 利用其 单调1/0位特性,用移位+按位或替代原本复杂的加减解码逻辑;
  • 减少了 Regime 运算能耗(节省达68%,详见图34.1.3和原文)。

4. CPCS:支持动态尾数位宽的优化

在页码567右栏底部:

“CPCS detects the weight mantisa bit width to pre-compute and store a logical value into the spare CIM cell...”

✅ 解释:

  • POSIT 中 尾数(Mantissa)位宽动态变化
  • CPCS 利用闲置位进行关键位预计算(critical-bit precompute);
  • 支持 双位MAC操作,提升CIM单元利用率达63%。

5. CASU:应对动态尾数对齐产生的能耗问题

在页码567最底至568顶:

“CASU uses bit wise or operations to replace bit wise addition if two mantissas have no overlap bits, saving 56.9% of energy...”

✅ 解释:

  • POSIT 尾数在累加过程中需对齐,但有66.8%概率不会重叠(因为位宽动态);
  • CASU 利用这一特点将加法器树中的部分加法替换为 OR 操作,极大降低了功耗。

📌 POSIT 使用的核心位置总结(含原文定位):

功能 详细说明 原文页码/位置
POSIT 格式介绍 解释了 POSIT 的4部分结构,及其精度-范围平衡机制 页566-567左栏第1段
POSIT 编码/解码 系统包含 FP-to-POSIT 和 POSIT-to-FP 模块 页567右栏第2段
BRPU 处理 POSIT Regime 替代传统codec逻辑,节能达68% 页567右栏 + 图34.1.3
CPCS 处理动态尾数 预计算尾数关键位,提升CIM利用率 页567底部 + 图34.1.4
CASU 优化加法器树 替代冗余加法,提升非重叠尾数能效 页568顶部 + 图34.1.5


这三点涉及 POSIT 格式在 CIM 宏结构中的应用,主要是为了优化 计算能效提高CIM单元的利用率。以下是每一点的详细解释,结合原文中的具体内容进行更深入的分析。


1. BRPU 使用 POSIT 中的单调1/0位特性,优化 Regime 处理

原文解释(页567右栏)

“a bi-directional regime processing unit (BRPU) that replaces the complicated codec logic with shifting and concatenation logic by using the successive 0/1 coding property of the regime...”

BRPU(双向规程处理单元)工作原理

  • RegimePOSIT 格式的一部分,其表示数据的范围(指数部分)。在 POSIT 中,Regime 是通过 单调的 0/1 编码 表示的,例如:1111000001,它指示了数字的大小范围。
  • 传统的 浮点数处理 需要复杂的解码和编码操作来计算 Exponent(指数)Mantissa(尾数)。而在 POSIT 格式中,由于 Regime 的位是单调递增或递减的(即连续的 0 或 1),这使得可以利用 移位操作按位或操作 来代替原来的复杂加减法运算,从而减少计算和功耗。

具体优化

  • 在 BRPU 中,原本需要进行 加法和减法 计算来调整 Regime 值的过程,改为 移位(shift)按位或(OR) 操作。具体来说,如果两个 Regime 值需要相加或相减,BRPU 通过移位操作来调整,然后使用按位或操作来拼接结果,避免了传统解码中的繁重计算。

原文

“... saving 40.3% of regime processing energy.”

总结

  • 通过利用 Regime1/0单调编码特性,BRPU 避免了传统复杂的解码过程,显著降低了 规程处理的能耗

2. CPCS 利用闲置位进行关键位预计算(critical-bit precompute)

原文解释(页567右栏底部)

“CPCS detects the weight mantisa bit width to pre-compute and store a logical value into the spare CIM cell...”

CPCS(关键位预计算与存储) 工作原理:

  • CPCS 是一种优化方法,它通过在 CIM 单元中利用 空闲位(spare bits) 来存储 关键位(critical bits) 的计算结果。
  • POSIT 格式中,Mantissa(尾数) 的位宽是动态的,根据数据的分布和需求可能会变化。例如,如果数据的尾数较小,可能只需要较少的位来表示。
  • CPCS 会在数据存储过程中,检测每个权重(weight)的尾数位宽,并将一些关键的位(如 S[1],即权重的最重要的位)预计算出来,并存储在 空闲的 CIM 单元中。这样,计算过程中不需要重新计算这些关键位,而是直接从存储单元中获取,节省了计算资源。

具体优化

  • 预计算关键位并存储在空闲位中,避免了在每个计算周期中重新计算,尤其是对 尾数 需要频繁对齐的情况下,能极大地提升 CIM 单元的计算效率

原文

“... improving CIM cell utilization by 63%.”

总结

  • CPCS 通过 空闲位的利用,在 CIM预计算关键位,提高了单元的 计算效率资源利用率,尤其是对于需要高效计算的 动态尾数位宽 数据。

3. CASU 利用尾数对齐的特点,减少加法器树功耗

原文解释(页568顶部)

“CASU uses bit wise or operations to replace bit wise addition if two mantissas have no overlap bits, saving 56.9% of energy...”

CASU(循环交替计算调度单元) 工作原理:

  • POSIT 格式中,尾数(Mantissa)动态对齐的,即在进行累加操作时,尾数的 对齐方式 会根据不同的数据而变化。
  • 当两个 Mantissa (尾数)进行乘加(MAC)操作时,如果它们的尾数没有 重叠位(即没有相同的位被同时访问或加法操作),那么传统的加法器树(Adder Tree)会进行 逐位加法。然而,如果尾数没有重叠,CASU 会通过 按位或操作(bit-wise OR) 来代替传统的加法操作,因为 OR操作 不需要进行逐位的进位和加法,直接合并两数结果。

具体优化

  • 当两个尾数的 位宽不重叠 时,CASU 使用 按位或操作 替代逐位加法,从而避免了冗余的加法操作,显著 减少了加法器树的能量消耗
  • CASU 中,调度单元会根据尾数的 重叠情况 调整计算顺序,使得更多的尾数不重叠,从而节省了更多的计算资源。

原文

“... saving 56.9% of energy for the adder tree.”

总结

  • CASU 通过 按位或操作 替代了部分冗余的加法操作,特别是在尾数没有重叠的情况下,大大减少了 加法器树的能量消耗

总结

这三点的优化措施都围绕 POSIT 数据格式的动态特性进行设计,通过以下方式提高了计算效率和能效:

  1. BRPU 利用 Regime单调1/0位特性,优化了 规程处理,减少了功耗。
  2. CPCS 利用 空闲位 存储 关键位,提高了 CIM单元的计算利用率
  3. CASU 利用尾数对齐的特点,减少了 加法器树的能耗,通过 按位或操作 优化了尾数计算。

这些创新设计大大提升了 CIM宏结构 在AI计算中的能效和计算能力。


当两个 Mantissa (尾数)进行乘加(MAC)操作时,如果它们的尾数没有 重叠位(即没有相同的位被同时访问或加法操作),那么传统的加法器树(Adder Tree)会进行 逐位加法。然而,如果尾数没有重叠,CASU 会通过 按位或操作(bit-wise OR) 来代替传统的加法操作,因为 OR操作 不需要进行逐位的进位和加法,直接合并两数结果。
这个分析再详细说明一下,可以举案例来说明:
非常好,这是论文中最关键也最巧妙的一点优化,我们来深入分析这个逻辑,再结合一个具体的示例说明为什么可以将加法替换为按位或(OR)操作,从而在POSIT尾数乘加操作中节省功耗


📌 背景:尾数乘加中的“位对齐”

在计算中(尤其是位串加法),两个乘积的尾数(Mantissa)需要 对齐(shift) 后再相加。常规做法中,即使两个数的位串没有重叠,加法器(Adder)依然会逐位处理所有位,导致无谓的能耗。

论文中统计发现:有66.8%的尾数对齐后是“没有重叠”的,也就是说在某些位上永远只有一个操作数有1,另一个是0,例如下面这个例子。


✅ 举例说明:按位或替代加法

假设两个乘积尾数如下(对齐后):

A:    00011000    ← 这是 W0 × A
B:    00000110    ← 这是 W1 × B

分析:

  • 你会发现 AB非零位完全不重叠
  • 传统加法操作:
    A + B = 00011000
          +00000110
           --------
           00011110
    
  • 实际上,这里没有任何进位发生,两个数中没有同一位都为1的情况。

那么可以直接做:

A | B = 00011000
      |00000110
       --------
       00011110

两者的结果完全一致,但按位 OR 操作是硬件中最简单、能耗最低的逻辑操作之一,而加法操作涉及多个进位链路,是最耗电的逻辑之一。


💡 优化背后的逻辑:

  • 当两数没有重叠位时:A + B ≡ A | B
  • 省去了加法器的运行 → 减少晶体管切换 → 节省功耗

🧠 CASU 的进一步优化:制造更多“非重叠”

论文不仅用 OR 替代了已有的非重叠情况的加法,还做了更进一步的事:

它通过循环移位改变计算顺序,故意让 原本部分重叠的尾数变得不重叠,以便更多使用 OR 替代加法。

举例(来自论文的描述):

原始尾数乘积:

MA = W0 × A =      00011000
MB = W1 × B =  +   00001100
→ 有两位重叠(中间的两个1)

CASU做了什么?它让 A 延后一位,从 A[0:n] 改为 A[1:n] - A[0],变成这样:

新 MA = W0 × A' =   00110000
原 MB = W1 × B  = + 00001100
→ 只剩1位重叠(或甚至无重叠)

最终能让 原本需要2个加法器的场景,只需要 1个加法器 + OR 逻辑来搞定。


📊 论文结果回顾:

  • 利用上述机制,CASU 提升了 无重叠尾数比例36.4%
  • Adder Tree 能耗下降了 56.9%(基于 POSIT(8,1) 的实验);
  • 是整个架构节能的关键。

✅ 总结

  • 前提:尾数对齐后无重叠位
  • 替代方式:加法器 → 按位或(OR)
  • 原因:A + B ≡ A | B (当没有重叠位时)
  • 好处:简化硬件逻辑、降低能耗、提高效率
  • 进一步优化:CASU 还通过调度控制制造更多非重叠情况以扩大节能范围
posted @ 2025-04-29 00:03  江左子固  阅读(342)  评论(0)    收藏  举报