Intel presenterar nya instruktionsuppsättningar

Permalänk
Medlem

Intel presenterar nya instruktionsuppsättningar

Intel har tillkännagivit nya instruktionsuppsättningar till kommande mikroarkitekturer (Haswell) vilket bl.a. innefattar 256-bitars Integervektoroperationer (AVX2), d.v.s. ungefär som AVX fast för heltal, nya vektorpermuteringar, variabla vektorshifts, scattered loads (gathers), vektorkonverteringar mellan short floats (16-bit) och floats samt nya instruktioner för general purpose registers.

Citat:

AVX2 extends Intel AVX by promoting most of the 128-bit SIMD integer instructions
with 256-bit numeric processing capabilities. AVX2 instructions follow the same
programming model as AVX instructions.
In addition, AVX2 provide enhanced functionalities for broadcast/permute operations
on data elements, vector shift instructions with variable-shift count per data
element, and instructions to fetch non-contiguous data elements from memory.

Nya GPR-instruktionerr:

ANDN — Logical AND NOT BEXTR — Bit Field Extract BLSI — Extract Lowest Set Isolated Bit BLSMSK — Get Mask Up to Lowest Set Bit BLSR- Reset Lowest Set Bit BZHI - Zero High Bits Starting with Specified Bit Position MULX — Unsigned Multiply Without Affecting Flags PDEP — Parallel Bits Deposit PEXT— Parallel Bits Extract RORX — Rotate Right Logical Without Affecting Flags SARX/SHLX/SHRX- Shift Without Affecting Flags TZCNT — Count the Number of Trailing Zero Bits INVPCID - Invalidate Processor Context ID RDFSBASE/RDGSBASE—Read FS/GS Segment Base Register RDRAND—Read Random Number WRFSBASE/WRGSBASE—Write FS/GS Segment Base Register

http://software.intel.com/file/36945

Framförallt 256-bitars Integervektoroperationer har jag längtat efter sedan AVX presenterades, det kommer att ge fina prestandaboosts i många applikationer.

Mer generella permuteringar är alltid trevligt, dock verkar det endast vara för dword/qword/float/double i det här läget vilket är synd, hade gärna sett stöd för byte och word också.

Variabla vektorshifts där man kan shifta varje element olika mycket kan man nog trixa lite med för att kapa några klockcykler i ett flertal tillämningar skulle jag tro, kan bli intressant att programmera med.

Scattered loads har varit efterfrågat länge då det är användbart till mycket, dock är det tyvärr även här begränsat till dword/qword/float/double.

Hårdvaru-RNG direkt i CPU:n kan vara väldigt intressant för en del applikationer, åtminstone om den ger bra throughput och ger bra slumpmässig spridning då rena mjukvarulösningar ofta är väldigt långsamma.

Kommer definitivt att införskaffa första CPU:n med AVX2-stöd så man får knacka lite assembly och uppdatera en bunt algoritmer. Assembly är helt klart det roligaste språket att programmera i då man verkligen får tänka till för att hitta kreativa lösningar.

Några andra assemblykodare som hänger på Swec som har några tankar kring detta?

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Hedersmedlem

Inte sysslat tillräckligt med assembly för att riktigt greppa allt, men det är kul att läsa om nyheter på så låg nivå och förstå vad det handlar om =D