<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>My Research Blog</title><description>A personal site for paper reading notes, daily logs, and projects.</description><link>https://agus76677.github.io</link><item><title>Paper Reading: Reduction 1</title><link>https://agus76677.github.io/blog/paper-reading-reduction</link><guid isPermaLink="true">https://agus76677.github.io/blog/paper-reading-reduction</guid><description>从零开始的 Reduction 模约简 研究生活，第一批论文速记。</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import PaperRatingGuide from &apos;@/components/papers/PaperRatingGuide.astro&apos;
import PaperCard from &apos;@/components/papers/PaperCard.astro&apos;&lt;/p&gt;
&lt;h2&gt;EF-PB-AM&lt;/h2&gt;
&lt;p&gt;
是一篇近似压缩器的文章，用来了解下主modular分支之外的约减也是不错的。小白适合阅读的文章！&lt;/p&gt;
&lt;p&gt;所谓的权重等价，就是按照1的个数将16种输入状态等价为6种，其中2占了两种。这部分的硬件结构对应叫做重排序电路，实际上就是8个门组成的电路，搭建原理就是真值表。&lt;br&gt;
所谓的低概率规范状态做近似，就是专门调了1100+1111/1110+1111两种情况做了两种design，按照1的个数越多，错误概率越小进行挑选的。最后得到了错误概率虽然不是最小的，但是最节能的设计方案。&lt;br&gt;
接下来对表4，5，6，图1进行讲解&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-23_10-53-26.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;表4就是重排序电路的真值表，图1就是根据真值表得到的电路。&lt;br&gt;
表5就是对表4继续进行了统计，值得注意的是times指标，这是以前的旧方法喜欢用的指标，实际上作者用的是概率，而非简单的次数。&lt;br&gt;
表6则是考虑了表3后，进一步得出的两种设计方案。值得讲解的是，这里的Ca，和Sum是特定的，也就是经过精挑细选的，并且由此可总结一张真值表，用于完成Y0123→Cay/Sum的映射，得到的映射公式如(1)(2)所示，见下图。&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-23_14-57-19.png&quot; alt=&quot;&quot;&gt;
所以我们现在有了ABCD→Y0123的映射，又有了Y0123到Carry/Sum的映射，所以构建的电路如下，就是按照两套映射走的。&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-23_14-58-04.png&quot; alt=&quot;&quot;&gt;
继续的，我们讲解一下fig4，虽然说fig1是整篇文章的最突出的创新点，但是对于新手而言，fig4包含了重要的信息。&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-23_14-59-12.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;首先分为了上下三层，从上到下依次为：原始的8*8部分积展开，深8行，有15列；经过一次处理的部分积，可见深度已经变浅了许多；处理完成的两行部分积，只需要用一个普通的加法器就可以得到最终的乘法结果。那么为什么要采用reduction tree结构呢？因为乘法器里最麻烦的不是生成部分积，而是：某些列里 bit 太多了，不能直接一次加完。因此最佳的做法就是先进行压缩，只剩两行时用普通的加法器做最终结果。需要注意的是，用到的三种部件都会对高位列产生影响，也就是作用完成之后本列增加一个点，隔壁列也会增加一个点。&lt;/p&gt;
&lt;p&gt;讲解到这里差不多就结束了，算是比较充分的理解了一下近似压缩是怎么一回事，不过咱们要做的是比特模，而不是这个。&lt;br&gt;
顺便把table1也讲解一下。&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-23_15-42-35.png&quot; alt=&quot;&quot;&gt;
这个的话主要的疑问就是这个x是什么东西，直接说了：x就是乘号。然后给出这个图的意思就是要应用half adder，full adder，以及4,2 compressor。&lt;/p&gt;
&lt;p&gt;值得借鉴的经验就是利用对称性，非对称性，减少无效翻转和路由复杂度。&lt;br&gt;
其实你现在做的电路的一个明显可以优化的地方就是对于路由网络进行剪枝，他现在的有效翻转状态实在是太少了！&lt;br&gt;
这篇paper有讲解视频：https://ieeexplore.ieee.org/document/10136817&lt;/p&gt;
&lt;h2&gt;Dadda-Bitmod-MR&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;与前人的主要区别就是，进一步压缩了tree中的bit数目，以及tree树的层数，前两人研究的，虽然都是bitmod层级的，但是树的高度为4层。&lt;br&gt;
值得注意的是，在bit tree层级，通过冗余消除，把负项，重复项和可拆分项都在tree的层面提前处理，这是得到低树高的关键。超权重项继续回代、同列正负项直接抵消、以及利用 &lt;code&gt;2^m*c_m=2*2^{m-1}*c-M&lt;/code&gt; 做拆分/合并。&lt;br&gt;
文章进一步拓展：
1.声称三种冗余消除方法可以迁移，但是并没有给出真正的可迁移实现&lt;br&gt;
2.上述的三种冗余消除方法，缺乏更加学术化的表达，需要进一步包装一下。&lt;br&gt;
3. 推广到Dilithium/Falcon。甚至FHE等场景。&lt;br&gt;
接下来回答几个关键问题，以及讲解几张关键图片。&lt;br&gt;
Q1：文中提到的三种冗余消除方法，到底怎么理解？有没有例子？
method3就是把三个点化简为两个点，同时换列，以及符号改变
method1。还是不太懂
method2容易理解，不再赘述
Q2：负数转补码环节为什么要+1？又是怎么最后进行简化，得到final bit tree的？&lt;br&gt;
因为二补码恒等式，就是先取反，再+1.因此出现的低位1，一部分是这么来的。第二层就是位宽上的多1bit。原始两个12bit数相加，最大要到14bit，现在多1位符号位，成为15bit。&lt;br&gt;
对于最后的finalbit处理，是这样的。1个列上如果有多个1，直接按照普通二进制加法处理。然后图2右下角的两个1也是因为转补码后+1得到的。&lt;br&gt;
给出fig1到fig3的表达。
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-26_09-58-42.png&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-26_09-58-58.png&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-26_09-59-12.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;关键图片讲解：
fig1：已经在Q1中讲解过了。同理fig2，fig3&lt;br&gt;
fig4：本文的主要硬件工作都在这张图片中，实际上就是fig5图片的另一种表达方式。CSA3虽然在ASIC中非常有用，但在FPGA中串行的双CSA2结构将会引入关键路径。CSA2和CSA1则有用的多，CSA0则是虚拟的，实际上就是硬连线。fig5就是对应的更加传统的压缩树表达。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-26_09-21-28.png&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-26_09-21-56.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心方法：&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.BeWd0lhj.webp"/><enclosure url="/_astro/thumbnail.BeWd0lhj.webp"/></item><item><title>Daily Log: 2026-03-05</title><link>https://agus76677.github.io/blog/daily-2026-03-05</link><guid isPermaLink="true">https://agus76677.github.io/blog/daily-2026-03-05</guid><description>Daily notes for 2026-03-05.</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Today&lt;/h1&gt;
&lt;p&gt;今天把之前一直没有看的工程代码看一看，并且看看原装论文。&lt;/p&gt;
&lt;p&gt;昨日虽然睡觉比较晚，但是可能因为锻炼，以及开了电热毯的原因，感觉睡醒之后还是比较有精神的。&lt;/p&gt;
&lt;h2&gt;Todo List&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] 至少阅读一半的工程代码文件。&lt;/li&gt;
&lt;li&gt;[ ] 对于工程代码文件，最好是结合一个整体的图片，理解其中的数据流是怎么运转的。而且也要清楚每个代码文件的作用。&lt;/li&gt;
&lt;li&gt;[ ] 看看文献阅读的视频，并且阅读一篇文献。&lt;/li&gt;
&lt;li&gt;[ ] 中午去吃烧鹅&lt;/li&gt;
&lt;li&gt;[ ] 晚上依旧锻炼。锻炼完之后才喝那个酸枣仁粉。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Done&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Paper Reading: Kyber 1</title><link>https://agus76677.github.io/blog/paper-reading-kyber</link><guid isPermaLink="true">https://agus76677.github.io/blog/paper-reading-kyber</guid><description>从零开始的 Kyber AI 研究生活，第一批论文速记。</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import PaperRatingGuide from &apos;@/components/papers/PaperRatingGuide.astro&apos;
import PaperCard from &apos;@/components/papers/PaperCard.astro&apos;&lt;/p&gt;
&lt;h2&gt;SCNTT&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心方法：针对二维 PE 阵列，扩充无冲突映射方法，并提供严谨的无内存冲突及无 RAW 冲突证明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-04_18-34-45.png&quot; alt=&quot;NTT hardware architecture&quot;&gt;&lt;/p&gt;
&lt;p&gt;这张图展示了该篇论文的核心硬件架构。随着流水深度增加，所需 MUX 带宽可下降，从而降低资源开销。&lt;/p&gt;
&lt;p&gt;让我们再上传一张图片，如下所示。你好，能看到我的修改吗&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-04_19-12-45.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这张图片则是显示了其RAM的实际方案，也还算不错。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-04_19-21-16.png&quot; alt=&quot;&quot;&gt;
进一步地，我们来看一下他的PE阵列是怎么排放的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;价值：当前方案很强，工程上可借鉴意义高。&lt;/li&gt;
&lt;li&gt;局限：原文比较复杂，阅读门槛较高。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;HS-NTT&lt;/h2&gt;
&lt;p&gt;
是Mu文章的延续。
突出的贡献为将23&lt;em&gt;23的乘法器，分解为4个12&lt;/em&gt;12的小型乘法器，并利用2^23等价2^12-1 mod q 特性实现折叠。在加法层面采用的是CSA。此外，统一了NTT和INTT结构，使得RU利用率从50%上升到100%。不过后面这个点显然是个幌子。以及实现了基2和基4的实现。核心图片为fig2.展示了其怎么实现Dilithium模数下的DSP分解。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-11_19-46-44.png&quot; alt=&quot;&quot;&gt;
分解为四个小乘法。其中因为aH*bH天然具有2^23权重，因此作者利用2^23等价2^13-1 mod q ，将高位乘积折回较低位域。因此得到PM,PL,PH三部分。该部分与figrue1的部分积归并相关，建议回头仔细阅读。后续又进行了以此K-RED尾部约减。总体来说位分裂乘法+CSA归并+模数性质折叠+K-RED。
总体来说，大体知道了怎么一回事。但是具体原理还是需要仔细阅读。
&lt;/p&gt;
&lt;h2&gt;TCO-NTT&lt;/h2&gt;
&lt;p&gt;
之前的NTT输出系数调度策略多为BFU出之后，存储到对应的bank中，要再次从bank中到BFU，需要采用permutation进行重排。而TCM-NTT（或成为TCO-NTT），则在TCM结构中，用memory写入顺序提前完成重排，在下一阶段BFU需要时直接读出数据，简单而言，就是用时间调度解决了空间重排问题。重排开销被塞进了目标时序约束框架中~
此外，通过sub NTT策略，实现了任意并行度和任意radix的支持。TCM同样支持任意并行度下的NTT设计。
对于核心fig3进行讲解：
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-12_10-35-54.png&quot; alt=&quot;&quot;&gt;
该图片是对于整体TCM架构机制的形象阐述。描述了我开头的数据是经过CD1~3X进行一个初步延迟，如果是在某些并行度和radix下，那么还需要Carry-over index进行跨stage的对齐，NTT-Reordering则是真正进行数据重排的结构，原理就是多路选择器！最后的offset time结构则是对整体进行一个对齐，确保到BFU单元具有一个统一的时延。
TCM的输入来自BFU的输出数据流，其输出则是送往下一stageBFU的输入数据流。并非完全没有存储开销，还是要存储一个多项式，但是也就仅仅只有这么一份开销了。
可见，经由TCM之后，数据自然而然完成了重新排列这个操作，不需要付出昂贵的mux以及bank代价，只需要付出少量的硬件开销以及时序约束为代价。&lt;/p&gt;
&lt;h2&gt;EL-Kyber&lt;/h2&gt;
&lt;p&gt;
这篇文章主要解决了三件事情：
1.紧凑的hash模块&lt;br&gt;
2.非存储的iterative NTT，即NMI-NTT&lt;br&gt;
3.高效的，并发的控制流。表现为前端随机数产生，采样，和后端的NTT。PWM操作并发。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;讲解NMI-NTT&lt;br&gt;
传统的迭代型架构为数据从bank读出，经过路由打回BFU。这个本质上就是一个数据重排以及缓冲的操作，因此完全可以有一个重排序单元完成，因此引入RU（实现了延迟+反馈重排）。省去了多余的RAM以及路由网络。
这个RU单元是这个作者用的非常多的方法了，也比较好用。
算是结合了iterative和pipeline架构的优点吧！pipeline的经典架构是MDC/SDF，需要多级流水，硬件开销庞大！iterative的经典架构例如pingpong，无冲突地址映射等，但是都需要存储开销以及路由，免不了由BRAM！但是这个NMI-NTT就做的很棒！采用延迟线完成阶段间重排这样一个核心任务！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;讲解hash模块&lt;br&gt;
采用25*64bit 寄存器承当装载，轮函数计算和输出工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;讲解控制流调度&lt;br&gt;
对于哈希，采样，NTT，PWM，INTT，压缩。将其次序重排。哈希是很慢，但是生成下一项的过程和计算当前项（后者由采样和NTT）过程可以重叠，因此可以用调度隐藏哈希慢的问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;接下来讲解fig6&lt;/strong&gt;：
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-12_16-14-08.png&quot; alt=&quot;&quot;&gt;
(a)中重点讲解了单个stage内的RU是如何构成闭环的。这里重点讲一下为什么要进行延迟重排，以及BU出来的数据为什么需要对齐这个事情（即BU的两个操作数同一时刻到达，正好构成该stage所需的蝶形配对）。
在蝶形单元运算中，我们每个stage都需要计算256个点，如果是双路的话，每个蝶形需要计算128个点，这128个点，单个时钟周期只会输出两个点，但是输出的两个点并不一定就是下个周期紧接着需要的两个点，因此为了在下一周期（实际上更宽广，为了下一个stage）还能进行正确的BFU计算，需要进行额外的等待。等待的时钟周期是确定的，且和当前的stage有关，因此，为了完成正确的数据配对，所需要等待的时钟周期有2，4，8。对于 BU 输出的两路数据，RU 会根据当前 stage 的目标配对关系，选择不同的延迟路径，使两路数据在经过 D0、D1 及反馈后，于正确时刻重新配对并送入下一轮 BU.&lt;/p&gt;
&lt;p&gt;(b)就是讲解了D0的内部组成。&lt;/p&gt;
&lt;p&gt;(c)则是讲解了当后续 stage 所需 delay 变小时，多出来的系数存哪？会不会下一拍和新进数据冲突？然后可以看出，reordering是很快的，可以把RU中的数据存起来，等到NTT真正运算需要的时候再给送出去。这个方式实现的核心就是feedback，可以把本阶段暂时不用立刻输出的系数重新送回 D0 中的未使用段&lt;/p&gt;
&lt;h2&gt;AMR-NTT&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;作者针对广义梅森素数约减逻辑空白，以及现有访存方案复杂度太高的问题，提出AMR-NTT架构，实现了面积效率优先的NTT方案。&lt;/p&gt;
&lt;p&gt;首先介绍访存方案，如下图所示：
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-19_16-10-56.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;radix-2情况下，传统为同拍下读取a，b两个系数进行运算（所谓的两侧数据），改进后为当前拍子只取一侧数据，但是取两个，即a,ac。然后通过缓存机制实现数据的自动对齐，下一拍再取b,bc。因为不同stage，要得到两侧数据的对齐时间不同，因此引入dm参数控制延迟拍数。对于同拍，ac延迟a一个时钟周期，bc延迟b一个时钟周期。&lt;/p&gt;
&lt;p&gt;对于模约简方案，针对广义梅森素数进行了化简，最终只需要判断三种情况应用哪一种，（即单bit就能判断是否进行约减），传统为对整个64bit数运算。如下图所示
其中c为提出方案，可见节约了加法器逻辑，predict logic即为单bit生成，以及具体的模约简计算。
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-19_16-11-50.png&quot; alt=&quot;&quot;&gt;
2026年3月24日，对于文章重新进行查看
关于广义梅森素数，还可以看这个维基https://en.wikipedia.org/wiki/Solinas_prime
之前关于SN-BCC这篇文章已经初步地阅读过一次了，当时是skim状态。现在针对其中的广义梅森素数章节继续进行深入地阅读。&lt;br&gt;
对于128bit 的数z，可以表达为这种2^32进制的形式z = 2^{96}a + 2^{64}b + 2^{32}c + d。其中abcd都是2^32的数字。对p=(2^{32}-1)2^{32}+1进行模之后，剩下的部分就表达为公式3中所示&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-24_09-46-10.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;进一步地，作者和[11]和[12]都指出，这个约减后的结果不一定落在p内，因此分别提出了其进一步约减的电路。也就是上上图。&lt;br&gt;
作者Guo对此也有研究，他进一步的指出b+c在不同范围下，需要何种基于p的补偿操作。为了表达的方便，其定义X=b+c,Y=d-a-b。这样做视为了后续进一步定义的方便。&lt;br&gt;
后续，Guo进一步定义了ABCDEF，用来表示X和Y的一些特征。这时候发现，根据ABCDEF的不同取值（捷尔和之前多b+c的范围讨论），最终可以确定是+p，还是-p，还是不变。实际上就加和减两种状态，因此刻画了一个真值表，也就是输入为ABCDEF，输出为加或减标志位，也就是ct1,ct2。关于模约简中的数学相关推导到这里就结束了.&lt;br&gt;
&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-24_09-50-47.png&quot; alt=&quot;&quot;&gt;
但是Guo毕竟是做硬件出身的，他又进一步地发现这个模约简器可以进一步地简化。可以看到，原始版本是需要存储3行数据，但是仔细发现后，可以将非常规范地P融入到X中。先来看P的构造：+p = 0xffffffff00000001，−p =0x100000000ffffffff。发现+p的时候，必须X=0，这时候完全可以直接融入。当-p的时候，因为X低32bit为0，因此可以融入，对于X高32bit，-p不会对其造成影响。总而言之，P可以实现融入！&lt;/p&gt;
&lt;h2&gt;CFNTT&lt;/h2&gt;
&lt;p&gt;
作为第一篇完整阅读的NTT文档，还是有些感情的，后面才渐渐发现自己的知识库还是太浅太浅了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;核心方法：4分支无冲突公式映射。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;价值：适合新手入门。提出的采用基2BFU实现基4BFU确实是一种比较好的方法&lt;/li&gt;
&lt;li&gt;局限：不具有很亮眼的表现。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;RT-1&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;价值：证明“大数据 + 统一架构”在机器人控制上可行。&lt;/li&gt;
&lt;li&gt;局限：泛化边界与高层规划能力有限，依赖任务分布。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;RT-2&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;价值：桥接了网络规模语义知识与实体执行。&lt;/li&gt;
&lt;li&gt;局限：对执行稳定性和长时序任务仍有挑战。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;NIST-PQC-Survey&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;一篇综述性质的扫盲文章，目的是建立 PQC 领域的整体 map，&lt;strong&gt;不涉及具体的算法性能改进&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;理论背景与研究路线&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2015 年，Langlois 等人 [10] 研究了模上错误学习问题（module-LWE, MLWE），并将 MLWE 问题归约到模格上的困难问题。&lt;/li&gt;
&lt;li&gt;整体研究路线大致为：
&lt;ol&gt;
&lt;li&gt;基于 LWE 的 Regev 公钥加密方案 —— NIST 中的类 Regev 方案如 Titanium，但公钥太大，严重影响效率。&lt;/li&gt;
&lt;li&gt;在加密过程中加上随机噪音并重用 LWE 假设以保证方案正确性，得到 &lt;strong&gt;LP 公钥加密方案&lt;/strong&gt;，相比 Regev，公钥/私钥大小小 &lt;code&gt;log q&lt;/code&gt; 倍。&lt;/li&gt;
&lt;li&gt;基于 2010 年 Lyubashevsky 等人提出的 RLWE 问题，给出了 LP 方案的环版本。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;NIST 标准中类 LP 方案有：FrodoKEM、KYBER、NewHope、SABER、NTRU Prime 等。&lt;/li&gt;
&lt;li&gt;根据格困难型假设可进一步分为 5 类：&lt;code&gt;LWE/R&lt;/code&gt;、&lt;code&gt;RLWE/R&lt;/code&gt;、&lt;code&gt;MLWE/R&lt;/code&gt;、&lt;code&gt;NTRU/R&lt;/code&gt;、&lt;code&gt;Integer-MLWE/R&lt;/code&gt;，后文也以此对加密方案进行区分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不同假设的对比&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RLWE&lt;/strong&gt;：基于环上错误学习，底层多项式环采用指数为 2 的幂的分圆环。改变安全等级时不灵活，需要更换底层环；与 LWE 类似，通信成本较大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MLWE&lt;/strong&gt;：Kyber 即为 MLWE 方案，可视为高效 RLWE 与安全 LWE 之间的折衷。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I-MLWE&lt;/strong&gt;：性能很好，但安全性尚未得到严格证明和认可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NTRU&lt;/strong&gt;：2011 年 Stehlé 等人指出，若密钥多项式由离散高斯分布通过拒绝采样抽取，则安全性等同于 RLWE。优势在于封装/解封装快；劣势是密钥生成阶段需要多项式求逆，相比 RLWE / MLWE 慢。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LWE vs LWR&lt;/strong&gt;：LWR 通过 round 技术将大模数舍入到较小模数，因此相比 LWE 密钥/密文规模更小，带宽和内存需求也都更小，适合内存有限系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结构化格 vs 非结构化格&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构化格（MLWE/R、RLWE/R、NTRU）相比非结构化格 LWE，时间效率普遍更高；但 NTRU 需要执行多项式乘法，密钥生成较慢。&lt;/li&gt;
&lt;li&gt;因为带结构，MLWE/R 与 RLWE/R 在理论上安全性低于 LWE。两者性能相似，但 NIST 更倾向 MLWE/R —— 结构更少，对应需要更高的理论安全性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Q&amp;#x26;A&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q1：尽管我现在对于各个方案的性能有了大致的了解，并且也大致知道可以分为两个大类，即具有结构环的，和不具有结构环的。但是我对于方案的具体区分还不知道，例如RLWE是在LWE上做了什么改进才被称为RLWE的？同理MLWE和NTRU（这里存在一个假设就是我认为其余结构化格都是在LWE基础上改进的，不知道对不对）？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LWE&lt;/strong&gt; 核心方程：&lt;code&gt;b = A·s + e (mod q)&lt;/code&gt;，其中 A 是公钥矩阵，体积巨大（约 9KB）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RLWE&lt;/strong&gt;：把 A 换成环上的一个多项式 a：&lt;code&gt;b = a·s + e (mod q, x^n + 1)&lt;/code&gt;，公钥缩小约 n 倍。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MLWE&lt;/strong&gt;：不再用单个多项式，而是用多项式构成的小矩阵：&lt;code&gt;b = A·s + e&lt;/code&gt;，其中 A 是 k×k 矩阵，每个元素都是 &lt;code&gt;R_q&lt;/code&gt; 中的多项式。&lt;/li&gt;
&lt;li&gt;因此 &lt;strong&gt;MLWE 是 LWE 与 RLWE 中间的折衷&lt;/strong&gt;：&lt;code&gt;k = 1&lt;/code&gt; 时退化为 RLWE，&lt;code&gt;n = 1&lt;/code&gt; 时退化为 LWE。&lt;/li&gt;
&lt;li&gt;NTRU 的历史比 LWE 还要早。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q2：这篇文章主要是扫盲，不涉及具体密码算法性能改进，对吗？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对。主要目的是了解 map，建立全局视角。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;HP-MR-NTT&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;这个小子也想做混合radix方案？
就是说 NTT对于加速多项式乘法很重要，然后他提出了一种新颖的混合基NTT/INTT算法以及一种统一的硬件架构。具体而言就是应用到了2*2PE阵列的蝶形单元减少开销。模乘器是资源共享的，然后内存方案是专门制定的。&lt;/p&gt;
&lt;p&gt;我要专门学习一下他是怎么描述混合基方案的了！
多项式乘法是PQC方案中计算开销最昂贵的操作。&lt;/p&gt;
&lt;p&gt;尽管引入NTT数论变换可以显著降低PQC方案中的计算复杂度，但多项式乘法计算速度仍然是制约实际应用的主要因素。&lt;/p&gt;
&lt;p&gt;为了加快NTT运算速度，最常见一种方法是采用多个基数为2的蝶形单元（BFUs）并行工作。然后列举系列工作。
然而，此类工作虽然提高了计算速度，但是付出了依赖多个蝶形单元资源凯西奥增加地代价。
相比之家，高基数算法能在节约资源的同时提升速度。然后列举系列工作。
然而，这种方法存在严格的多项式长度限制。为了解决这个问题，提出了混合基数算法。然后列举相关工作。
然而，现有的混合技术方法对于不同的格基方案缺乏灵活性。我们提出了一种高效的混合基数NTT架构，适用于高性能计算。然后就开始列举他自己的贡献了。&lt;/p&gt;
&lt;p&gt;综上，我感觉这个很适合引出他自己的混合基方案设计，但是明显并不适合我们的论文！因为我们的首要卖点是循环解耦这个架构层面的设计！然后在是radix2/radix4！然后再是存储方案！&lt;/p&gt;
&lt;p&gt;该paper中为Kyber采用了与Dilithium相同的方案，而没有处理Kyber的特殊一次多项式乘法环节。而且可以显著地看出，在切换为radix-2 BFU时，无论是乘法器，还是模加模减，都存在50%地浪费。&lt;/p&gt;
&lt;p&gt;Questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它这个方案里面应该是没有考虑一次环下多项式乘法吧。也就是无论是Dilithium还是Kyber，实际上都是采用的相同的调度流程？&lt;br&gt;
是这样的，作为一个缺陷咯&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心方法：&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.DQrKqMUh.webp"/><enclosure url="/_astro/thumbnail.DQrKqMUh.webp"/></item><item><title>Daily Log: 2026-03-04</title><link>https://agus76677.github.io/blog/daily-2026-03-04</link><guid isPermaLink="true">https://agus76677.github.io/blog/daily-2026-03-04</guid><description>Daily notes for 2026-03-04.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Today&lt;/h1&gt;
&lt;h2&gt;Done&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;今天主要在折腾博客写作流程和发布流程。&lt;/li&gt;
&lt;li&gt;基于开源的 MDX editor 搭建了本地可视化编辑页面，体验比之前更顺手。&lt;/li&gt;
&lt;li&gt;后面发现还是不采用 MDX editor比较好，自己写了个脚本，直接双击脚本就可以打开本地的网页，然后关闭网页之后会触发自动推送。现在现在的工作流差不多了，就是需要手动打开需要修改的文档这一点有点烦。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Sitepins 在 MDX 组件场景下并不稳定，回到本地编辑 + Git 推送更稳。&lt;/li&gt;
&lt;li&gt;一键脚本已经简化了本地预览和发布的流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;继续补充论文阅读卡片内容。&lt;/li&gt;
&lt;li&gt;进一步优化图片和摘要展示。&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Paper Reading: Embodied AI 2</title><link>https://agus76677.github.io/blog/paper-reading-eba2</link><guid isPermaLink="true">https://agus76677.github.io/blog/paper-reading-eba2</guid><description>从零开始的 Embodied AI 研究生活。</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import PaperRatingGuide from &apos;@/components/papers/PaperRatingGuide.astro&apos;
import PaperCard from &apos;@/components/papers/PaperCard.astro&apos;&lt;/p&gt;
&lt;h2&gt;OpenVLA&lt;/h2&gt;
&lt;h2&gt;π0 (Pi-Zero)&lt;/h2&gt;
&lt;h2&gt;GR-2&lt;/h2&gt;
&lt;h2&gt;小结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;这一批里最推荐先复现 &lt;code&gt;OpenVLA&lt;/code&gt;，再做 &lt;code&gt;π0&lt;/code&gt; 的局部思想迁移。&lt;/li&gt;
&lt;li&gt;如果你的目标是快速形成正反馈：每读完一篇，至少补齐 &lt;code&gt;评分 + 三条结论&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/thumbnail.DQrKqMUh.webp"/><enclosure url="/_astro/thumbnail.DQrKqMUh.webp"/></item><item><title>Daily Log: 2026-03-03</title><link>https://agus76677.github.io/blog/daily-2026-03-03</link><guid isPermaLink="true">https://agus76677.github.io/blog/daily-2026-03-03</guid><description>建立个人网站的第一天.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Daily Notes&lt;/h1&gt;
&lt;h2&gt;What I did&lt;/h2&gt;
&lt;h3&gt;总结&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;搭建了第一个个人网站。希望后面可以用这个网站来记录阅读了哪些领域的哪些论文。以及每一天做了什么事情。后续花费了一点功夫，把网站挂到了github上，这样就可以保证24h都在线了！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;晚间和师兄同门出去吃饭&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为Zotero添加了一个AI辅助阅读的插件。并购买了一些API使用&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Zotero插件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插件git：https://github.com/MuiseDestiny/zotero-gpt?tab=readme-ov-file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中文版的说明在这里： https://zotero-chinese.com/user-guide/plugins/zotero-gpt
还有购买API，不是很贵。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这个网站有免费的，但不是很好用：https://github.com/chatanywhere/GPT_API_free?tab=readme-ov-file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从这里买的：https://chatanywhere.apifox.cn/#zotero&lt;/p&gt;
&lt;p&gt;sk-a7gTnUe5JwtY0QTA4FYOIrmuRcjv4u2kduXQvhfU1tY0H8vB&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;线上个人网站&lt;/h3&gt;
&lt;p&gt;还需要做的事情&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;那个插入图片怎么搞？&lt;/li&gt;
&lt;li&gt;还有就是paper是要有大纲的，这个回去也弄一下。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;现在Codex还是很强，搭建个网站还是特别快的&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tomorrow&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;阅读两篇文章，给库存增添点东西&lt;/li&gt;
&lt;li&gt;自己是不是得开始写点新的体会每日日记之类的东东了？&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Daily Log: 2026-03-03</title><link>https://agus76677.github.io/blog/daily-welcome</link><guid isPermaLink="true">https://agus76677.github.io/blog/daily-welcome</guid><description>Template post for daily notes.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Today&lt;/h1&gt;
&lt;h2&gt;Done&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Task A&lt;/li&gt;
&lt;li&gt;Task B&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Insight 1&lt;/li&gt;
&lt;li&gt;Insight 2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Plan for tomorrow&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Research Notes: Getting Started</title><link>https://agus76677.github.io/blog/research-welcome</link><guid isPermaLink="true">https://agus76677.github.io/blog/research-welcome</guid><description>Template post for paper reading and research summaries.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;How to use this post&lt;/h1&gt;
&lt;p&gt;Use this format for your paper reading notes:&lt;/p&gt;
&lt;h2&gt;Paper 1: Title&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Link: https://arxiv.org/abs/xxxx.xxxxx&lt;/li&gt;
&lt;li&gt;Score: 4/5&lt;/li&gt;
&lt;li&gt;Why it matters: one paragraph&lt;/li&gt;
&lt;li&gt;Key idea: one paragraph&lt;/li&gt;
&lt;li&gt;Limitations: one paragraph&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Paper 2: Title&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Link:&lt;/li&gt;
&lt;li&gt;Score:&lt;/li&gt;
&lt;li&gt;Summary:&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Paper Reading: Embodied AI 1</title><link>https://agus76677.github.io/blog/paper-reading-eba1</link><guid isPermaLink="true">https://agus76677.github.io/blog/paper-reading-eba1</guid><description>从零开始的 Embodied AI 研究生活，第一批论文速记。</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import PaperRatingGuide from &apos;@/components/papers/PaperRatingGuide.astro&apos;
import PaperCard from &apos;@/components/papers/PaperCard.astro&apos;&lt;/p&gt;
&lt;h2&gt;RT-1&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://agus76677.github.io/images/Snipaste_2026-03-04_18-34-45.png&quot; alt=&quot;RT-1 related architecture figure&quot;&gt;&lt;/p&gt;
&lt;p&gt;图中展示了该类方案的硬件架构思路。通过增加流水深度，可以减少 MUX 电路规模，从而降低资源开销。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;价值：证明“大数据 + 统一架构”在机器人控制上可行。&lt;/li&gt;
&lt;li&gt;局限：泛化边界与高层规划能力有限，依赖任务分布。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;RT-2&lt;/h2&gt;</content:encoded><h:img src="/_astro/thumbnail.DQrKqMUh.webp"/><enclosure url="/_astro/thumbnail.DQrKqMUh.webp"/></item></channel></rss>