2025年4月22日星期二

尝试了一下 SIMD everywhere

前段时间在折腾数独,看了一下比较快的几个实现,基本都要靠 SIMD,最后选中的是 tdoku,不过里面的 SIMD 都是 x86 上的,我现在主力机已经变成了 M1 Ultra Mac Studio,于是开始折腾 SIMD everywhere

使用方法还是很简单的,引入 SIMDe 的头文件,然后把 _mm_blabla 都加上 simde 的前缀变成 simde_mm_blabla,然后对应修改一下宏开关和 CMake 文件就好。当然也有一些调用没法翻译,例如 _mm_cmpeq_epi8_mask,用宏开关回退处理一下就好。

然后跑了一下性能测试,以下结果是默认包含更早的指令集的,比如 AVX512 默认就开启了所有 SSE 以及 AVX2 AVX1 等。

AVX512

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    441192.3 |         2.3 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    145510.3 |         6.9 |      47.7% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    134246.9 |         7.4 |      78.7% |           0.61 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     48798.4 |        20.5 |       7.9% |           9.05 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     10001.8 |       100.0 |       0.0% |          55.00 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      8302.0 |       120.5 |       0.0% |          65.00 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      5304.0 |       188.5 |       0.0% |         113.19 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    185128.5 |         5.4 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   1767598.2 |         0.6 |      97.4% |           0.28 |

AVX2

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    457427.4 |         2.2 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    153541.9 |         6.5 |      47.4% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    140428.5 |         7.1 |      78.7% |           0.61 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     51233.8 |        19.5 |       7.9% |           9.06 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     10519.0 |        95.1 |       0.0% |          55.03 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      8706.3 |       114.9 |       0.0% |          64.97 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      5442.9 |       183.7 |       0.0% |         113.07 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    191109.5 |         5.2 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   1814562.8 |         0.6 |      97.4% |           0.28 |

AVX

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    644955.6 |         1.6 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    218633.8 |         4.6 |      47.6% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    198852.5 |         5.0 |      78.6% |           0.62 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     72522.9 |        13.8 |       7.9% |           9.06 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     14989.6 |        66.7 |       0.0% |          54.92 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     12312.2 |        81.2 |       0.0% |          64.97 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      7976.6 |       125.4 |       0.0% |         113.19 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    271330.8 |         3.7 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   2201973.6 |         0.5 |      97.4% |           0.32 |

SSE 4.2

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    649117.3 |         1.5 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    214462.4 |         4.7 |      47.5% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    194553.9 |         5.1 |      78.7% |           0.61 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     70727.5 |        14.1 |       7.9% |           9.06 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     14585.9 |        68.6 |       0.0% |          54.94 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     11865.1 |        84.3 |       0.0% |          64.99 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      7667.1 |       130.4 |       0.0% |         113.12 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    268004.8 |         3.7 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   2327193.4 |         0.4 |      97.4% |           0.28 |

SSE 4.1

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    630080.5 |         1.6 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    209809.2 |         4.8 |      47.4% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    192380.4 |         5.2 |      78.7% |           0.61 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     70330.4 |        14.2 |       7.9% |           9.06 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     14396.9 |        69.5 |       0.0% |          54.96 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     12090.5 |        82.7 |       0.0% |          64.96 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      7959.7 |       125.6 |       0.0% |         113.17 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    255759.0 |         3.9 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   2227786.9 |         0.4 |      97.4% |           0.28 |

SSSE 3

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    636460.5 |         1.6 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    211631.3 |         4.7 |      47.9% |           1.12 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    192110.1 |         5.2 |      78.7% |           0.62 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     71057.8 |        14.1 |       7.9% |           9.05 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     14736.9 |        67.9 |       0.0% |          54.96 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     12656.2 |        79.0 |       0.0% |          64.95 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      8108.5 |       123.3 |       0.0% |         113.09 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    279108.4 |         3.6 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   2416115.4 |         0.4 |      97.5% |           0.27 |

SSE 2

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    276657.1 |         3.6 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     92831.1 |        10.8 |      47.4% |           1.12 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     84223.8 |        11.9 |      78.7% |           0.62 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     30532.7 |        32.8 |       7.9% |           9.04 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      6300.4 |       158.7 |       0.0% |          54.85 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      5162.1 |       193.7 |       0.0% |          64.99 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      3302.7 |       302.8 |       0.0% |         113.13 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    112815.9 |         8.9 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   1169978.6 |         0.9 |      97.4% |           0.28 |

None

|data/puzzles0_kaggle                  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    273777.6 |         3.7 |     100.0% |           0.00 |

|data/puzzles1_unbiased                |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     89851.1 |        11.1 |      47.3% |           1.13 |

|data/puzzles2_17_clue                 |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     80658.1 |        12.4 |      78.7% |           0.62 |

|data/puzzles3_magictour_top1465       |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|     29483.5 |        33.9 |       7.9% |           9.06 |

|data/puzzles4_forum_hardest_1905      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      6055.2 |       165.1 |       0.0% |          55.05 |

|data/puzzles5_forum_hardest_1905_11+  |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      5052.6 |       197.9 |       0.0% |          64.90 |

|data/puzzles6_forum_hardest_1106      |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|      3295.0 |       303.5 |       0.0% |         113.23 |

|data/puzzles7_serg_benchmark          |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|    111730.9 |         9.0 |       0.0% |           7.13 |

|data/puzzles8_gen_puzzles             |  puzzles/sec|  usec/puzzle|   %no_guess|  guesses/puzzle|
|--------------------------------------|------------:|------------:|-----------:|---------------:|
|tdoku                      T/shrc+./m+|   1176020.0 |         0.9 |      97.4% |           0.28 |

SSSE 3AVX 性能都差不多,相比于 x86 的原生性能,差距还是比较明显的,只能说 neon 这玩意儿坑略多。

Apple 在 M 处理器上还有 AMX,支持类似 AVX 512 的 512 的位宽,不过是有点类似后门的玩意儿,只能通过阿婆自己的 Accelerate 库间接调用,也有人做了逆向。以后有空再折腾吧。

2025年4月10日星期四

VTX Intro S100

现在键盘市场虽然很卷,但是很神奇的是标准配列的键盘很少人去做,而且不知道为啥,前高一个二个都做得贼高,感觉买回去也不是为了打字的,就是为了听个声、摸摸铝坨坨,整个就一大号手办。

所以 S100 出来的时候就预定了,选择确实不多。但是运过来就比较波折了,先是 FR4 定位板要返工,先发了一张铝定过来,但是我又很不喜欢铝定的手感,于是选择了等。好不容易等到了转了海运,这段时间由于众所周知的原因,入关比较困难,于是这个包裹在海上漂了两个月,终于才落地。



总体外观还是不错的,就是太重了,如果可以去掉配重又不影响配重块下面的电池的放置就好了。我也不知道是谁开启了这个风气,往键盘里面塞配重,多想不开。

电路板为了支持多布局,右 Enter 的卫星轴螺丝没法放垫片。另外热插拔版只支持 103 不能用 104。支持了欧版但是不支持 104 也是很匪夷所思的设计。



轴的话还是例行黄玉。键帽配合键盘的共生紫配色,弄了 Domikey 的雷史莱姆。



键盘只支持 103 的弊端就出来了。本来支持 103 的键帽就少,适合 Mac 的 opt/cmd 互换的键帽也少,既要支持 103 的 1.5U 又要有 Mac 字符的,那就真没有了。另外这个键盘一些功能是需要 Fn 的,正好放右边,我就搞不明白这个 103 的意义在哪里。

不过现在全尺寸的键盘这么少,似乎也没什么好抱怨的。

2025年2月21日星期五

Diagnostic Policy Service CPU 占用

最近给那台老的 Windows 机器清灰、重新涂硅脂、升级 BIOS。5950x 终于算是稳定了下来,不再随机重启了(应该主要是 AGESA version ComboV2PI 1.2.0.Cc 的功劳,之前几乎每一版  BIOS 都有 BUG,不是随机重启就是性能低到离谱,要不然就是 USB 故障)。

硅脂之前用了暴力熊,TFX 之类的“高端”硅脂,总之就是比较贵,但是实际用下来,效果也就那样。所以这次用了比较常规的 7921。涂 7921 其实不麻烦,不用很精细地用手套慢慢压之类的,就是挤个 X 形然后散热器盖上锁紧完事。不用怕挤多了,台式机的散热器那种锁紧压力,想厚都不可能。X 形的最大优势是在压力下,硅脂是从中心往四条边扩散的,空气都从四边挤出去了。如果是精涂或者是多点挤,空气往往还会卡在硅脂里面出不去。X 形的坏处就是安装完毕之后旁边会被挤出挺多,其实也没啥关系,实在堵着慌擦掉就好。总之,折腾完毕之后 Prime95 Blend 烤鸡也就 74、75 度,俩单核 5.05G,全核 4.5G,作为风冷还是挺满意的。

结果问题来了,进了桌面完全闲置的状态,Package 温度也上 70 度,功耗也有 70、80W。这个就很不正常。看了一下任务管理器,得,Diagnostic Policy Service CPU 给我一直跑得欢呢。

AI 时代,搜索容易了很多,略过过程不提,问题出在 Windows 的一个陈年老 BUG 上,就这服务会猛往 system32\sru 下面写文件,需要强制停止服务,删除这个文件夹,然后重启服务。之后这个服务就不会再往里面写日志了。

Reddit 上已经有人写了个脚本干这事



@echo off
echo ... Set DPS service start type to manual ...
echo.
sc config DPS start= demand

echo.
echo ... Find PID of DPS service ...

for /f "tokens=2 delims=[:]" %%f in ('sc queryex dps ^|find /i "PID"') do set PID=%%f

echo.
echo ... Kill DPS service
echo.

taskkill /f /pid %PID%


echo.
echo ... Delete sru Folder ...
echo.

rd /s "%windir%\system32\sru"

echo.
echo ... Set DPS service start type to auto ...
echo.
sc config DPS start= auto

echo.
echo ... Start DPS service ...

sc start DPS
echo.

pause

UPDATE: microsoft fixed that issue and this fix is not longer be neccesary :)

2025年2月3日星期一

折腾铝坨坨其二

上篇

半高矮轴用了一段时间,还是感觉有些不太完美。一来半高茶轴的杂音比较大,听久了还是有些烦躁,作为高特的廉价轴,手感一致性也比较差,臭轴也有一定比例(~10/104);二来键帽会下沉一小段,加上边框比较紧凑,导致拔靠边上键帽的时候比较费力。既然这种铝上盖的套件做成完全静音不太可能,那干脆组一把青轴好了。

事实上,在 G80 青之后,我用过各种青轴键盘,比如号称小 Filco 的 CM 烈焰枪绿轴,雷蛇的黑寡妇绿轴,什么凯华、高特、佳达隆的各种青,都和 G80 青有一定的差距。而 Box 白虽然整体素质还行,但是原理所限,扭簧发声的时间和实际触发的时间是对不上的,这就有点滑稽。而我对于确认感这一点要求颇高,例如所有的所谓 HiFi 线性轴,都是触底发声,这个发声的时间也和实际触发的时间是对不上的。所以并不是我排斥触底声,而是无法忍受触发的确认反馈和触发本身对不上这件事。

在所有用过的青轴中,也就是高特的青轴和樱桃青最接近,其他家多多少少都有我用不下去的缺点。

所以青轴选的是高特的蓝玉轴。这个轴几乎搜不到任何评价,但是我之前用过黄玉轴和奶油黄这两款静音提前段落轴。对于奶油黄的评价是,Boba U4 的平替;而黄玉轴虽然大体手感和奶油黄差不多,但是轴芯稳定性更好、更顺滑,连 Boba U4 的那一点弹簧音和沙沙声都没了。我的评价是全方位超越 Boba U4,而且只要不到 7 毛一个,还要什么自行车。

和黄玉轴同时推出的有蓝玉轴和粉玉轴,粉玉是线性轴就先排除了。蓝玉的话出于对黄玉的信心,直接盲狙了 200 多个。

蓝玉和黄玉合影:


上手第一感觉是不如黄玉稳定,不过这也是意料之中,因为青轴的两段式结构,轴芯稳定性是天然不如其他轴体的。手感和樱桃青相比,段落的凸起稍微大一点,确认的哒的一下也稍微响一些,但是其他方面都完全超越樱桃青,比如轴芯的稳定程度、杂音的控制尤其是没有沙沙声和各种奇怪的触底回声,就是很清脆的确认别无其它。因为外壳材质的缘故,即使是放在铝上盖上,触底也相对柔和。品控稳定,手感一致,组完以后测试完全没有臭轴。

不过蓝玉是五脚轴,这个铝坨坨的 PCB 是三脚焊接改的爪簧,所以没办法,水口钳慢慢来吧。

卫星轴用的是 欧赛得 DKV3,也就是俗称的吧卫。稳定性非常好,而且也没有乱七八糟的杂音,稍微在钢丝顶端润一下就很好了。



键帽用的是 NuPhy 家的 GemPBT,mSA 高度,比 OEM 稍微矮一点点,比原厂略高,也是为数不多有 R5 高度的。

这套键帽的空格比较特别,号称是隐声空格,其实就是里面多了一些填充。但是麻烦的地方来了,这个空格明显比常规的空格要重。想起来 G80 青也是这样,空格用重一些的绿轴,G80 茶的空格是重一些的白轴。现在就是要找到合适的弹簧就行了。

蓝玉号称是 50gf 触发,但是按上去感觉比 Boba U4 还要重一些。果不其然,从 Gazzew 那里买的 Boba 弹簧,无论是 55g 还是 65g,换上去都比蓝玉原装的要轻。我猜 Boba 弹簧标注的是触底力度而不是触发,实际触发的话约等于高特那边的 42gf 和 45gf。


没办法,只好把之前多余的给超大键帽用的 80g 弹簧换上,但是感觉上又太重了。又想起来静音月白里面那根超长的双段弹簧,换上去以后比蓝玉原装要重一点,但是还是有点抬不起空格。于是把之前的试轴器上的乱七八糟的轴挨个拿来试,终于在一个不知道叫什么名字,大概已经停产的 Akko 轴里面整了一根压力差不多的轴出来。感觉还是比我需要的轻了不到 5g,但是差不多能用了。

顺便翻出来一套多余的轴下垫和底棉,顺手装上。


装完以后,前高稍微升高了一些,不过还是可以接受的。


键帽是五面热升华,所以就没有 ABS 或者 POM 那么黑,稍微偏深蓝灰那种。做工的话好于之前那套 KDA 高度的。


这铝套件折腾就暂时告一段落吧。


[update]

加了个 poron 夹心,其实没有什么变化。



2025年1月19日星期日

折腾了一把铝坨坨+半高矮轴的键盘




最近一段时间一直在生病,于是又开始折腾键盘了。起因是大概一年多前在闲鱼闲逛,看到一把 100 块的 104 布局的铝坨坨套件,卖家不提供任何支持,看了一下,有线、预留了单色灯位和焊接三脚轴,因为顶盖即定位板的设计,前高非常紧凑,当然,不会有任何声音包填充之类的。总之在这个看不起全配列,并且因为 gasket 恨不得把前高垫上天的时代,这个套件就非常符合我的胃口。

拿到手的包装是个完全不知名的牌子,Mitch Rabbit。我怀疑是某个厂子试制了一批不合格的货,就拿到闲鱼清货了。现在看起来,这货的外观和 图阁 T200s 是一样的。

包装长这样:



本体是这样(已经把套筒和灯焊好了,收到的时候是光的 PCB 板):



前高确实比较矮



这个套件有比较明显的瑕疵,比如螺丝孔不是很能对得上:




另外外观上也有一些边边角角的擦伤。

PCB 应该是支持蓝牙的,但是蓝牙芯片预留的位置是空的,旁边引脚还有焊锡残留。但是只要有线还能用就行了。


为了进一步减少前高,我这次打算折腾一点,用高特的半高矮茶轴。高特的矮轴其实有两种,一种是针脚和 MX 轴兼容,底部少量缩减高度,所以即使是定位板和 PCB 间距固定的套件,针脚也可以大半插下去,但是上部键程缩减比较多的半高矮轴;还有一种是更矮、不兼容 MX 针脚的矮轴。

半高轴和正常高度的 MX 轴对比(高特的黄玉轴):



需要注意的是,半高矮轴需要配合专用的钢板卫星轴,普通的卫星轴会太高。虽然键程缩短了,但是大部分原厂和 OEM 高度,以及类似高度的键帽都可以直接用,不需要矮轴键帽。有些 MDA 和 SA 键帽可能会有问题。

而半高矮轴下面比正常 MX 轴矮的那一点点,是第一个伏笔。


这块板子是纯焊接的,没法上热插拔轴座,但是既然折腾,就折腾到底,于是买了热插拔套筒。

焊套筒相对来说比较容易,挨个放到 PCB 的针脚孔里面,然后胶带贴上,翻面,挨个焊接就好了。

这是我犯的第一个错误。



灯的话支持单色的 234 灯,或者是贴片灯。贴片灯对我这种焊接手残星人来说有些困难,所以买了一包白色的单色灯。测试灯的好坏可以用纽扣电池,厚度刚好。



而这是第二个错误。

这一系列决策每一个看起来都很合理,开始着手采购的时候完全没有意识到之后会有多么麻烦。


首先,这个套件的右上角是没有开孔的,所以 CapsLock、ScrollLock、NumLock 以及 Windows Lock 都是在对应轴体的灯上显示的。对于我这种背光无所谓的人来说,其实就给这几个灯位焊上绿色、蓝色或者红色的 LED 就好了,配合灯帽,完美。但是等我意识到这一点的时候灯都焊了一半了。

234 LED 的焊接就不像套筒那么简单了,因为焊接之前固定没有那么方便。等我焊得七七八八的时候才发现,灯都有点歪歪扭扭。




这事吧,工作量还是其次,最大的麻烦是轴体的灯槽对于灯的姿势是非常挑剔的,稍微歪一点就插不进去,于是不愿意把灯都拆了的我,决定先插上轴体,然后调整实在太歪的灯的位置。



裸板测试了一遍,重新焊接了几处 LED 以后,我信心满满地开始组装上盖,也就是定位板了。



这个上盖的定位开口实在是太紧了,每个轴都要超级大力才能插下去。插完一测,得,一堆键不触发,然后 ASDF 那一行从 S 开始按任意键都会触发整行,而 S 旁边的 CapsLock 和 A 则完全没有反应。

和插轴一样困难地拔了一堆轴之后发现,针脚都压平了,S 键下面的行触发线还被弯掉的针脚戳断了。

套筒对于针脚的容错性本来就不如热插拔轴座,加上紧得发指的定位板(如果松一点,按下去的时候可以感受到正确进入套筒的那一点点轻微的突破阻力),加上半高矮轴下面多出来的一点点间隙,再加上 LED 灯对轴体轻微的扭转,共同造成了安装轴体的时候大面积歪针脚的悲剧。

现在想起来,正确的顺序应该是先把轴带着套筒和 LED 灯装上上盖,然后再装 PCB,一次性全部焊接。既能避免单个安装轴体导致 LED 歪和针脚对不准,又节约了反复焊接调整的时间。

当然,最好灯能用贴片,要不然 234 灯还有挡住卫星轴钢丝的问题,要换卫星轴就得把 PCB 给拆了。

行触发线断路的问题,可以靠银漆笔,也可以飞线。手头没有银漆那就飞一根吧。



之后则是漫长的把轴脚掰直再全部安装回上盖,然后再小心把 PCB 合上的过程。注意虽然 PCB 有 5 颗螺丝固定在上盖,但是边缘部分如果变形的话还是会导致轴脚插入套筒的深度不够,导致触发不良的问题。如果是轴带着套筒焊接的方式会更稳固一些,但是之后就不能换常规高度 MX 轴了。



之后就是固定底壳,贴脚贴,以及磁吸脚撑。





键帽用的是这边买的 XVX 高度的键帽,为数不多价格不高还有 R5 高度的(Esc 和 F 键那一行加高)。这个高度应该是国内的 KDA 高度,但是价格就贵很多了。而且很神奇的是,XVX 在淘宝也有店,但是没有卖这种键帽的,而在美亚卖了一段时间也下架了。可谓是从套件到键帽都一股子半成品的味道。




侧面看高度非常紧凑,又有比较深的弧度,实在是太适合半高矮轴了。



于是总体高度比常见的套件矮了一截。



目前使用来说,这个前高是比较适合没有手托的状态(当然最合适的还是 G915 那种矮轴+超薄底板+换一套有弧度的键帽)。声音就比较吵了,这个套件没有声音包,加上顶盖定位板+半高矮茶轴,想必也安静不到哪里去。手感上来说,倒是偏重一点点的经典茶的手感,我本来想说力度像白轴的,但是白轴因为弹簧力度加强的原因,段落感反而不如茶来得明显。而半高茶的段落感要更为尖锐一些。反正原厂茶也是各种杂音+不太均匀的涩感,所以也没有太多好抱怨的。

另外这个半高茶轴的稳定性居然还不错,相比于晃成摇杆的 G915 来说扎实了不少。

灯光模式的组合键是 Fn+PrintScreen/ScrollLock/PauseBreak,以及 Fn+方向 调节亮度和速度,Fn+Win 切换 Windows 键锁定,Fn+F 区有一些快捷启动和多媒体功能,比如 F12 是计算器,F11 静音、F10 音量减、F9 音量加等。切换 Mac 模式的快捷键还没有试出来,也许就没有。