Żelazne prawo wydajności procesora

W architekturze komputerów żelazne prawo wydajności procesora (lub po prostu żelazne prawo wydajności) opisuje kompromis wydajności między złożonością a liczbą prymitywnych instrukcji używanych przez procesory do wykonywania obliczeń. To sformułowanie kompromisu pobudziło rozwój [ potrzebne źródło ] komputerów o zredukowanym zestawie instrukcji (RISC), których architektury zestawu instrukcji (ISA) wykorzystują mniejszy zestaw podstawowych instrukcji w celu poprawy wydajności. Termin został ukuty przez Douglasa Clarka na podstawie badań przeprowadzonych przez Clarka i Joela Emera w latach 80.

Wyjaśnienie

Wydajność procesora to czas potrzebny do wykonania programu: . Można to dalej podzielić na trzy czynniki:

Wybór instrukcji wpływa , podczas gdy w dużej mierze zależy od technologii produkcji. Komputer klasycznym ) poprzez zapewnienie większego zestawu bardziej złożonych instrukcji procesora . liczbę ponieważ muszą zostać zdekodowane na prostsze mikrooperacje faktycznie wykonywane przez sprzęt. Po przekonwertowaniu binarnego X86 na mikrooperacje używane wewnętrznie, całkowita liczba operacji jest zbliżona do tej, która jest generowana dla porównywalnego RISC ISA. Żelazne prawo wydajności procesora czyni ten kompromis wyraźnym i naciska na optymalizację jako całość, a nie pojedynczy element.

Chociaż żelazne prawo jest uznawane za zapoczątkowanie rozwoju architektur RISC, [ potrzebne źródło ] nie oznacza to, że prostszy ISA jest zawsze szybszy. Gdyby tak było, najszybszy ISA składałby się z prostej logiki binarnej. Pojedyncza instrukcja CISC może być szybsza niż równoważny zestaw instrukcji RISC, gdy umożliwia wykonanie wielu mikrooperacji w jednym cyklu zegara. W praktyce jednak regularność instrukcji RISC umożliwiła implementację potokową, w której całkowity czas wykonania instrukcji wynosił (zwykle) ~ 5 cykli zegara, ale każda instrukcja następowała po poprzedniej instrukcji ~ 1 cykl zegara później [ potrzebne źródło ] . Procesory CISC mogą również osiągać wyższą wydajność przy użyciu takich technik, jak rozszerzenia modułowe, logika predykcyjna, skompresowane instrukcje i fuzja makrooperacji.

Zobacz też