“บางคนผ่อนคลายด้วยเครื่องดื่มดีๆ ริมสระ ฉันผ่อนคลายด้วยการเล่นกับ [Assembly code] แบบอินไลน์”เป็นคำพูดดีๆ ประจำวันที่ Linus Torvalds อธิบายหลังจากที่เขาปรับปรุงแพตช์เพิ่มประสิทธิภาพการทำงานที่เสนอให้ หน้าต่างผสาน Linux 6.5 ที่กำลังดำเนินอยู่
แพตช์เพิ่มประสิทธิภาพสำหรับ csum_partial ถูกส่งไปแล้วในวันนี้ผ่านทาง x86/misc คำขอดึงข้อมูล ขณะที่ Linus Torvalds กำลังตรวจสอบโค้ด เขาแสดงความคิดเห็นในรายชื่ออีเมล:
“พูดตามตรง เมื่อดูแพตช์นั้น ปฏิกิริยาของฉันคือ”ทำไมมันถึงคลี่ออกเป็นชิ้นขนาด 64 ไบต์ ถ้า 40 ไบต์เป็นค่าวิเศษ”
โดยเฉพาะอย่างยิ่งเมื่อมี”ทำ ดำเนินการแต่ละ 32 ไบต์เพื่อสร้างชิ้น 32 ไบต์เป็นอิสระและเพิ่ม ILP”ดังนั้นแม้กรณี 64 ไบต์จะไม่ * จริงทั้งหมด * กำลังทำการคลาย 64 ไบต์ แต่ก็เป็นการคลาย 32 ไบต์สองตัวพร้อมกัน
คุณมีค่า”magic”สามค่า และ มีเพียงอันเดียวที่สำคัญจริงๆ น่าจะเป็นขนาด 40 ไบต์
ใช่ ใช่ 64 ไบต์คือขนาดแคชไลน์ปกติ และเป็น”แบบดั้งเดิม”สำหรับการคลายออก แต่ที่นี่ไม่มีอะไรมหัศจรรย์เลย
ผลลัพธ์สุดท้าย: คงจะดีไม่น้อยหากทำเพียงชิ้นขนาด 40 ไบต์ และทำให้”ชิ้นขนาด 32 ไบต์สองชิ้นซ้อนทับกัน”ขนาด 64 ไบต์เป็นสองชิ้นจากขนาด 40 ไบต์
มีบางอย่างเช่น (ยังไม่ได้ทดสอบทั้งหมด!) ที่แนบมาด้วยแพตช์หรือไม่
อีกครั้ง: สิ่งนี้ *ไม่ได้* ทดสอบ ฉันได้ดูชุดประกอบที่สร้างขึ้นอย่างรวดเร็ว และดูคร่าว ๆ เหมือนกับที่ฉันคาดไว้ แต่อาจเป็นขยะทั้งหมด
ฉันเพิ่ม”น่าจะ ()”สองสามอย่างเพียงเพราะมันทำให้ asm ที่สร้างขึ้นดูเป็นธรรมชาติมากขึ้น (กล่าวคือเป็นไปตามลำดับของซอร์สโค้ดที่นั่น) มิฉะนั้นก็เป็นคำอธิบายประกอบที่น่าสงสัย
สุดท้าย: ฉันได้บอกไปแล้วหรือยังว่านี่ยังไม่ผ่านการทดสอบเลย”
หลังจากส่งข้อความนั้น เขาก็ได้ตระหนักถึงข้อผิดพลาดง่ายๆ ในรหัสแอสเซมบลีที่เขียนด้วยมือของเขาและเพิ่ม:
“..ฉันสังเกตสิ่งนี้โดยดูที่แพทช์อีกครั้ง ไม่มี *การทดสอบ* เกิดขึ้นจริง มันอาจจะยังเป็นขยะที่ยุ่งเหยิงแม้ว่าจะมี”+r”ก็ตาม มันเป็นเพียงขยะรถม้า * น้อยกว่า *
ตอนนี้ฉันจะกลับไปที่ถ้ำของฉันและดึงของต่อไป ฉันแค่ต้องทำอย่างอื่นสักพัก บางคนผ่อนคลายด้วยเครื่องดื่มดีๆ ริมสระ ฉันผ่อนคลายด้วยการเล่นกับ inline asm”
Linus Torvalds ลงเอยด้วยการรวมแพตช์การปรับให้เหมาะสม csum_partial ดั้งเดิม ในขณะที่เวอร์ชันของเขาผ่านความคิดเห็น/การสนทนาเพิ่มเติม
Borislav Petkov วิศวกร AMD Linux ที่จัดการคำขอดึง x86/misc ตอบกลับข้อความของ Linus Torvalds โดย:
“และมีคนประเภทที่สามที่พักผ่อนริมสระพร้อมกับเครื่องดื่มรสดี *ในขณะที่* เล่นกับ asm แบบอินไลน์ ;-P”