2025q1 Homework4 (quiz3+4)
contributed by <As7r1d>
2025q1 第 3 週測驗題
2025q1 第 4 週測驗題
測驗1
循環冗餘校驗,Cyclic Redundancy Check
運作方式如下:
- 選擇一個生成多項式
- 透過 XOR 運算來模擬二進位多項式的除法
- LSB-first(低位元先處理)的方法計算 CRC (例如 Fast CRC,採用位元反轉方式)
其中
這 8 次 shift & XOR 的過程,唯一影響的其實只有最開始的 8 位(最低 8 bit)。
該過程又可以改為預先合併為某個值存在 table 中方便查表
將每個 uint8_t v 處理時拆成兩次 4-bit 的查表,兩次查 4-bit(16 個項目)的小表格取代一次查 8-bit(256 個項目)的大表格。
在 Linux 核心原始程式碼中找到 CRC32 的應用案例至少 3 處,並探討其原始程式碼
設計實驗來分析 Fast CRC32 提出的手法 (要涵蓋 branchless 和查表的變形),並與硬體的 CRC32 指令效能進行比較。
以 x86-64 或 Arm64 為探討標的,說明 Linux 核心如何使用硬體加速的 CRC32 指令