Sa mga nakalipas na taon, walang oras si Linus Torvalds na magsulat ng napakaraming orihinal na bagong code para sa Linux kernel mismo sa mga araw na ito na kadalasang namamahala sa mga developer, nagbibigay ng mga mailing list na post, at nagsusuri ng code para sa pagsasama sa kernel tree kasama ng mga kaugnay na gawain. Para sa Linux 6.4 kahit na nagawa niyang magsulat ng ilang bagong code.

Noong nakaraang linggo, pinagsama ni Linus Torvalds ang kanyang sariling”x86-rep-insns”branch sa kernel para sa Linux 6.4 merge window. Ang focus sa code ng Torvalds para sa Linux 6.4 ay sa paglilinis ng x86 memory copy code. Ipinaliwanag niya sa ang Git merge:

“Nililinis nito ang marami sa aming x86 memory copy code, lalo na para sa mga pag-access ng user. Itinutulak ko ang microarchitectural na suporta para sa mahusay na pagkopya at pag-clear ng memory sa loob ng mahabang panahon, at ito ay naging makikita sa kung paano agresibong gumamit ang kernel ng’rep movs’at’rep stos’hangga’t maaari.

At ang suportang micro-architectural na iyon ay bumubuti sa paglipas ng mga taon, hanggang sa punto kung saan sa modernong CPU ang pinakamahusay na opsyon para sa isang memory copy na magiging isang function na tawag (kumpara sa pagiging isang bagay na maaari lamang gawing mga indibidwal na’mov’na mga tagubilin) ​​ay ngayon ay i-inline ang string na sequence ng pagtuturo sa halip.

Gayunpaman, iyon ay makatuwiran lamang kapag mayroon tayong ang mga modernong marker para dito: ang x86 FSRM at FSRS na kakayahan (“Fast Short REP MOVS/STOS”).

Kaya nililinis nito ang marami sa aming makasaysayang code, inaalis ang legacy na paggamit ng marker (“REP_GOOD”at”ERMS”) mula sa memcpy/memset case, at pinapalitan ito kasama ang modernong katotohanan. Tandaan na ang REP_GOOD at ERMS ay ginagamit pa rin ng mga kilalang malalaking case (ibig sabihin, page copyin gand clearing).

Ang dahilan kung bakit halos lahat ng ito ay tungkol sa pag-access ng memorya ng user ay dahil ang mga normal na in-kernel case ay ginagawa ng compiler (__builtin_memcpy() at __builtin_memset()) at umabot sa punto kung saan natin magagamit ang aming pagtuturo sa muling pagsusulat upang i-inline ang mga iyon upang maging mga tagubilin sa string ay mangangailangan ng ilang suporta sa compiler.

Sa kabaligtaran, ang mga function ng user accessor ay ganap na kinokontrol ng kernel code, kaya maaari naming baguhin ang mga iyon nang basta-basta.”

Nananatiling bukas ang Linux 6.4 merge window hanggang sa sa susunod na katapusan ng linggo na may higit pang feature code na patuloy na nai-publish.

Categories: IT Info