Eksperci oprogramowania zignorowali ekonomię sprzętu
... lub „Moore miał rację i obaj się mylili”
Najważniejszą rzeczą, która została przeoczona w tej debacie, był wpływ technologii wytwarzania procesorów i ekonomii, napędzany przez zmniejszające się rozmiary tranzystorów wyrażone w prawie Moore'a (nic dziwnego, jakby wiedzieli dużo o sprzęcie CPU, ci faceci studiowali i dyskutowali o oprogramowaniu, a nie Produkcja procesora lub ekonomia). Stałe koszty produkcji amortyzowane przez procesory (np. Projekt ISA, projekt procesora i urządzenia produkcyjne procesora) gwałtownie wzrosły, zwiększając w ten sposób korzyści skali; przy spadających jednostkowych kosztach procesora (w kategoriach „huk za złotówkę” i „huk za wat”), koszt procesora nie musi być amortyzowany w związku z tak szerokim wyborem funkcji, aby zapewnić wartość, więc przetwarzanie w produktach ze stałą funkcją wybuchł; Budżety tranzystorów CPU wzrosły wykładniczo,
1. Skala procesora wygrywa nad różnorodnością procesora
Znaczenie ekonomii skali sprawiło, że zalety ISA / CPU ukierunkowane na większy (a więc szerszy) rynek przewyższają potencjalne korzyści wynikające z wyborów projektowych, które zawężają rynek dla ISA / CPU. Systemy operacyjne mogą obsługiwać coraz większą część rynku na obsługiwany ISA / CPU, więc nie ma potrzeby (lub nawet nie ma potrzeby) wykonywania ćwiczeń związanych z przenoszeniem, aby umożliwić rozwój ekosystemu systemu operacyjnego. Domeny problemowe Cel ISA i procesora jest zwykle tak szeroki, że w większości się pokrywają, więc w przypadku każdego oprogramowania poza kompilatorem zmniejszyły się również rozmiary ćwiczeń związanych z przenoszeniem. Prawdopodobnie zarówno Torvalds , jak i Tanenbaumprzecenił część projektu i implementacji jądra, która teraz musi być ISA, a nawet specyficzna dla CPU. Jak opisał Tanenbaum, współczesne jądra systemu operacyjnego wyodrębniają różnice między procesorami i procesorami ISA. Jednak kod specyficzny dla CPU / ISA we współczesnych systemach operacyjnych jest znacznie mniejszy niż mikrojądro. Zamiast implementować obsługę przerwań / planowanie, zarządzanie pamięcią, komunikację i operacje we / wy, te nieprzenośne bity odnoszą się tylko do niewielkiej części implementacji tych usług, przy czym znaczna większość architektury nawet tych podstawowych funkcji systemu operacyjnego jest przenośna.
2. Open Source wygrał bitwę, ale przegrał wojnę
Większy zysk za złotówkę oznacza, że większy udział w przetwarzaniu danych mają produkty o stałej funkcji, w których możliwość modyfikacji produktu nie jest częścią oferty wartości dla klienta. Jak na ironię, oprogramowanie open source rozkwitło w tych urządzeniach o stałej funkcji, ale najczęściej korzyści płynące z tych swobód są realizowane raczej przez twórców produktów, a nie przez użytkowników końcowych (co było prawdą nawet na rynku oprogramowania jeszcze wtedy: Microsoft był dużym konsumentem oprogramowania typu open source, ale ich klienci nie). Podobnie można argumentować, że open source boryka się z większymi problemami z pulpitem ogólnego przeznaczenia niż gdziekolwiek indziej, ale wraz z rozwojem sieci i przetwarzania w chmurze, komputery stacjonarne są coraz częściej wykorzystywane w węższym celu (przede wszystkim w przeglądarce), z pozostałymi funkcjami działającymi w chmurze (jak na ironię, głównie na platformach open source). W skrócie: open source naprawdę posiada przestrzeń obliczeniową ogólnego przeznaczenia, ale rynek stał się bardziej wyrafinowany; przetwarzanie opakowań produktów komputerowych rzadziej zatrzymuje się na funkcji ogólnego przeznaczenia, ale jest kontynuowane wraz z produktem przeznaczonym do stałych funkcji, w których znaczna część zalet przetwarzania otwartego oprogramowania stoi w sprzeczności z celami produktu.
3. 2 n Środki wzrostu Stałe k Oszczędności nie są ważne
Gwałtowny wzrost budżetów tranzystorów przyniósł ze sobą świadomość, że koszt budżetu tranzystorów architektury CISC jest prawie całkowicie ustalony. Strategiczną zaletą RISC było przeniesienie złożoności z zestawu instrukcji procesora do kompilatora (bez wątpienia częściowo motywowane faktem, że autorzy kompilatorów czerpali znacznie mniej korzyści ze złożonych ISA niż twórcy kodujący w asemblerze, ale kompilatory mogą znacznie łatwiej zrozumieć matematycznie o prostym ISA, a zatem wykorzystującym); wynikające z tego oszczędności tranzystora można by następnie zastosować do poprawy wydajności procesora. Zastrzeżenie polegało na tym, że oszczędności budżetowe na tranzystorach wynikające z prostszego ISA zostały w większości naprawione (a narzuty w projektowaniu kompilatorów również zostały w większości naprawione). Chociaż ten stały wpływ był ogromną częścią budżetu w ciągu dnia, jak można sobie wyobrazić, potrzeba tylko kilku rund wykładniczego wzrostu, aby wpływ stał się trywialny. Ten gwałtownie malejący wpływ w połączeniu z wyżej wspomnianym gwałtownie rosnącym znaczeniem monokultury procesora oznaczał bardzo małe okno możliwości dla każdego nowego ISA. Nawet tam, gdzie nowe ISA odniosły sukces, współczesne ISA „RISC” nie są ortogonalnymi ISA opisanymi w strategii RISC, ponieważ dalszy wzrost budżetów tranzystorów i szersze zastosowanie przetwarzania SIMD w szczególności zachęciło do przyjęcia nowych instrukcji dostosowanych do określonych funkcji. Ten gwałtownie malejący wpływ w połączeniu z wyżej wspomnianym gwałtownie rosnącym znaczeniem monokultury procesora oznaczał bardzo małe okno możliwości dla każdego nowego ISA. Nawet tam, gdzie nowe ISA odniosły sukces, współczesne ISA „RISC” nie są ortogonalnymi ISA opisanymi w strategii RISC, ponieważ dalszy wzrost budżetów tranzystorów i szersze zastosowanie przetwarzania SIMD w szczególności zachęciło do przyjęcia nowych instrukcji dostosowanych do określonych funkcji. Ten gwałtownie malejący wpływ w połączeniu z wyżej wspomnianym gwałtownie rosnącym znaczeniem monokultury procesora oznaczał bardzo małe okno możliwości dla każdego nowego ISA. Nawet tam, gdzie nowe ISA odniosły sukces, współczesne ISA „RISC” nie są ortogonalnymi ISA opisanymi w strategii RISC, ponieważ dalszy wzrost budżetów tranzystorów i szersze zastosowanie przetwarzania SIMD w szczególności zachęciło do przyjęcia nowych instrukcji dostosowanych do określonych funkcji.
4. Proste: rozdzielenie obaw. Complex: Separacja przestrzeni adresowej.
Nowoczesne jądro Linuksa (podobnie jak większość innych jąder) pasuje raczej do luźnej definicji makrokernela, a nie do wąskiej definicji mikrojądra. To powiedziawszy, ze swoją architekturą sterowników, dynamicznie ładowanymi modułami i optymalizacjami wieloprocesowymi, które sprawiają, że komunikacja w przestrzeni jądra coraz bardziej przypomina przekazywanie wiadomości mikrojądra, jego struktura bardziej przypomina projekt mikrojądra (wcielony przez Minix) niż projekt makrokernela (wcielony w projekt Linuksa w czasie dyskusji). Podobnie jak konstrukcja mikrojądra, jądro Linuksa zapewnia uogólnioną komunikację, planowanie, obsługę przerwań i zarządzanie pamięcią dla wszystkich innych składników systemu operacyjnego; jego komponenty mają zwykle odrębne struktury kodu i danych. Podczas gdy moduły są ładowane dynamicznie, luźno połączone fragmenty przenośnego kodu, które komunikują się za pośrednictwem stałych interfejsów, nie wykorzystują jednej pozostałej właściwości mikrojądra: nie są to procesy w przestrzeni użytkownika. Ostatecznie prawo Moore'a zapewniło, że problemy motywowane problemami sprzętowymi, takimi jak przenośność (problem Tanenbauma) i wydajność (problem Torvaldsa) zmniejszyły się, ale problemy z programowaniem stały się niezwykle ważne. Pozostałe niezrealizowane zalety, jakie może zapewnić separacja przestrzeni adresowej, są przeważone przez dodatkowy bagaż nałożony na oprogramowanie systemu operacyjnego z powodu ograniczeń projektowych i zwiększonej złożoności interfejsów komponentów. Prawo zapewniło, że problemy motywowane problemami sprzętowymi, takimi jak przenośność (problem Tanenbauma) i wydajność (problem Torvaldsa) zmniejszyły się, ale problemy z programowaniem stały się niezwykle ważne. Pozostałe niezrealizowane zalety, jakie może zapewnić separacja przestrzeni adresowej, są przeważone przez dodatkowy bagaż nałożony na oprogramowanie systemu operacyjnego z powodu ograniczeń projektowych i zwiększonej złożoności interfejsów komponentów. Prawo zapewniło, że problemy motywowane problemami sprzętowymi, takimi jak przenośność (problem Tanenbauma) i wydajność (problem Torvaldsa) zmniejszyły się, ale problemy z programowaniem stały się niezwykle ważne. Pozostałe niezrealizowane zalety, jakie może zapewnić separacja przestrzeni adresowej, są przeważone przez dodatkowy bagaż nałożony na oprogramowanie systemu operacyjnego z powodu ograniczeń projektowych i zwiększonej złożoności interfejsów komponentów.
Co ciekawe, co ma być silna tendencja jest pojawienie hypervisor, która podobnie jak mikrojądro Abstracts się sprzętu. Niektórzy twierdzą, że hiperwizory są mikrojądrami. Architektura hiperwizora jest inna, ponieważ obowiązki przeznaczone do mikrokerneli są obsługiwane przez jądra „gościa” siedzące na szczycie, z multipleksami hiperwizorów między nimi, a abstrakcja hiperwizora nie jest ogólną komunikacją i przestrzenią adresową pamięci, ale przede wszystkim faktyczną emulacją sprzętu.
Podsumowując: przyszłość sprzyja tym, którzy przyjmą najmniej surową semantykę
* .. lub „nitpickers do bani przewidywania przyszłości”
W praktyce wiele poprawności / zła w debacie jest kwestią semantyki (i było to częścią argumentów Torvaldsa, a IMHO Tanenbaum nie docenił w pełni). Trudno jest precyzyjnie zdefiniować przyszłość, ponieważ istnieje tak wiele czynników poza argumentem, które mogą się pojawić; luźniejsza semantyka oznacza, że twoje przewidywania są większym celem na tarczy niż w przeciwniku, co daje ci o wiele większe szanse. Jeśli zignorujesz semantykę, argumenty wysunięte zarówno przez Torvaldsa, jak i Tanenbauma miały rację co do wielu rzeczy, a błędne bardzo niewiele.
tl; dr
Większość ISA nie pasuje do semantycznej definicji RISC, ale wykorzystuje większość zalet projektowych charakterystycznych dla procesorów RISC w tym czasie; ilość systemu operacyjnego zależna od CPU jest mniejsza niż oczekiwano Tanenbaum, nie mówiąc już o Torvalds; open source dominuje w komputerach ogólnego zastosowania, ale konsumenci tego rynku to teraz głównie ci, którzy pakują komputery w produkty o stałej funkcji, w których znaczna część korzyści z oprogramowania open source nie jest realizowana; oddzielenie funkcji systemu operacyjnego między przestrzeniami adresowymi nie okazało się korzystne, ale oddzielenie funkcji systemu operacyjnego od „wirtualnego” sprzętu ma. Jeśli chcesz twierdzić, że twoje przewidywania okazały się słuszne, zostaw sobie tyle semantycznego pokoju manewrowego, jak to możliwe, tak jak pan Torvalds.
PS Ostatnia ironiczna obserwacja: Linus Torvalds jest jednym z najsilniejszych zwolenników utrzymywania jak największej liczby nowych funkcji w przestrzeni użytkownika i poza jądrem Linuksa.