AMDs Zen-Architektur zeigt sich in Compiler-Quellcode

AMDs nächs­te CPU-Archi­tek­tur, wel­che die Bull­do­zer­fa­mi­lie ablö­sen wird, zeigt sich erst­mals im Quell­code der GNU-Binu­tils, die für den GCC-Com­pi­ler benö­tigt wer­den.

Ein AMD-Mit­ar­bei­ter stell­te dort nun einen Patch ein, um einen “znver1”-Prozessor zu unter­stüt­zen. AMD kürzt sei­ne Archi­tek­tur­code­na­men immer auf zwei Buch­sta­ben ab, Bull­do­zer lief z.B. unter “BD”, da Zen aber nur drei Buch­sta­ben lang ist, ist der Zusam­men­hang nicht all­zu schwer zu erken­nen. Wei­ter erfährt man Details zu den unter­stütz­ten Befehls­sät­zen, AMD scheint dabei mehr oder min­der mit Intels Has­well-Genera­ti­on gleich­zie­hen zu wol­len, außer AVX2 wer­den wei­te­re klei­ne Befehls­satz­er­wei­te­run­gen unter­stützt:

  • CpuADX/ADCX: Neue Instruk­tio­nen zur Unter­stüt­zung gro­ßer Inte­ger­zah­len
  • RDRAND: Kryp­to­gra­fie: Siche­rer Pseu­do­zu­falls­zah­len­ge­ne­ra­tor (SP 800–90A)
  • RDSEED: Non-deter­mi­nis­ti­scher Zufalls­bit­ge­ne­ra­tor (SP 800–90B & C) (Details)
  • SHA: Siche­rer Hash-Algo­rith­mus (Details)
  • XSAVEC: Sichern der Pro­ces­sor Exten­ded Sta­tes mit Com­pac­tion (Details)
  • XSAVES: Sichern des Pro­ces­sor Exten­ded Sta­tes Super­vi­sor (Details)
  • CLFLUSHOPT: Ermög­licht effi­zi­en­tes Cache­flus­hing (Details)

Zusätz­lich bringt AMD einen eige­nen, neu­en Befehl namens “CLZERO”:

New CLZERO inst­ruc­tion sup­port.
* clze­ro has opcode “0F 01 FC”.
* clze­ro gets enab­led with CPUID, 8000_0008, EBX[0] =1.
* clze­ro inst­ruc­tion zero’s out the 64 byte cache line spe­ci­fied in rax. Bits 5:0 of rAX are igno­red

Außer­dem schnei­det AMD wie­der alte Zöp­fe ab. Strich Bull­do­zer schon die 3DNow!-Instruktionen, geht es nun XOP und Kon­sor­ten an den Kra­gen. Nach­dem XOP mehr oder min­der Bestand­teil von AVX2 gewor­den ist, dort aber sogar 256-Bit-Ope­ra­tio­nen mög­lich sind, ist es über­flüs­sig und wird nicht mehr unter­stützt. Glei­ches gilt für die Trai­ling-Bit-Mani­pu­la­ti­on-Befeh­le (TBM), die erst mit AMDs Piledri­ver ein­ge­führt wur­den. Ver­mut­lich reicht AMD die Funk­tio­na­li­tät des durch Intel ein­ge­führ­ten BMI2-Befehls­sat­zes, den AMD schon ab Exca­va­tor unter­stützt. Die Light-Weight-Pro­filing-Befeh­le (LWP) wer­den eben­falls ein­ge­stellt. Wider­sprüch­lich ist die Unter­stüt­zung der FMA4-Befeh­le. In der Patch­erklä­rung schreibt der Pro­gram­mie­rer, dass auch dies gestri­chen wer­den wür­de:

 TBM, FMA4, XOP, LWP: ISAs are not sup­por­ted.

.. im Patch­code ist es aber noch ent­hal­ten:

+ { “CPU_ZNVER1_FLAGS”,
“Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuSYSCALL|CpuRdtscp|Cpu387|Cpu687|CpuFISTTP|CpuNop|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuSSE4a|CpuABM|CpuLM|CpuFMA|CpuFMA4|CpuBMI|CpuF16C|CpuCX16|CpuClflush|CpuSSSE3|CpuSVME|CpuSSE4_1|CpuSSE4_2|CpuAES|CpuAVX|CpuPCLMUL|CpuLZCNT|CpuPRFCHW|CpuXsave|CpuXsaveopt|CpuFSGSBase|CpuAVX2|CpuMovbe|CpuBMI2|CpuRdRnd|CpuADX|CpuRdSeed|CpuSMAP|CpuSHA|CpuXSAVEC|CpuXSAVES|CpuClflushOpt|CpuCLZERO” },

Wie man sieht, ist der Patch also noch mit hei­ßer Nadel gestrickt und sicher­lich nicht das letz­te Wort. Fest­zu­stel­len ist aber, dass AMD an Zens Soft­ware­un­ter­stüt­zung arbei­tet, die neue Archi­tek­tur also näher kommt.

Über wei­te­re Befehls­satz­de­tails infor­mier­te bereits unser alter Arti­kel: AMDs SSE5 ist tot — lang lebe AVX.

Dan­ke an isig­rim für den Foren­bei­trag.

Quel­le: AMD Starts Linux Ena­b­le­ment On Next-Gen “Zen” Archi­tec­tu­re — Pho­ro­nix.

Dis­kus­si­on im Forum