Studiując kurs dla początkujących na temat interfejsu sprzętowego / programowego i systemów operacyjnych, często pojawia się pytanie, czy lepiej byłoby wymienić niektóre części sprzętowe na oprogramowanie i odwrotnie. Nie mogę nawiązać połączenia.
interfaces
operating-systems
software
hardware
Gabriele Scarlatti
źródło
źródło
Odpowiedzi:
Myślę, że podstawowe powiązanie, którego brakuje innym odpowiedziom, jest następujące:
Biorąc pod uwagę komputer ogólnego przeznaczenia (np. Procesor), można go zaprogramować tak, aby wykonywał praktycznie dowolne zdefiniowane obliczenia. Jednak specjalistyczny sprzęt może działać lepiej lub nie zapewniać żadnej wartości.
(ta odpowiedź dotyczy przetwarzania na komputerze i wykorzystuje przykłady z tej domeny)
Wymiana oprogramowania na sprzęt
Jeśli jesteś wystarczająco dorosły, aby pamiętać gry na PC w połowie lub pod koniec lat 90., prawdopodobnie pamiętasz gry FPS, takie jak Quake . Zaczęło się od „renderowania programowego”, co oznacza, że procesor wykonał obliczenia niezbędne do renderowania grafiki. Tymczasem procesor musiał również wykonywać przetwarzanie wejściowe, przetwarzanie audio, przetwarzanie AI itp. To bardzo obciążało zasoby procesora. Ponadto przetwarzanie grafiki nie jest dobrze dostosowane do głównego procesora (wtedy lub teraz). Jest to zwykle bardzo równoległe zadanie, wymagające znacznie więcej rdzeni niż nawet nowoczesny procesor wysokiej klasy (8).
Przenieśliśmy przetwarzanie grafiki z oprogramowania na sprzęt: weźmy 3dfx Voodoo i Nvidia TNT (obecnie GeForce ). Były to wyspecjalizowane karty graficzne, które odciążyły procesor od procesora do GPU. Nie tylko to rozłożyło obciążenie, zapewniając więcej zasobów obliczeniowych do wykonania tej samej ilości pracy, karty graficzne były specjalistycznym sprzętem, który mógł renderować grafikę 3D znacznie szybciej i z większą liczbą funkcji niż procesor.
Szybko do epoki współczesnej, a grafika bez procesora jest wymagana na pulpicie. Nawet system operacyjny nie może działać bez procesora graficznego. To bardzo ważne, aby procesory faktycznie zintegrowały teraz procesory graficzne. 1
Wymiana sprzętu na oprogramowanie
Kiedy DVD było zupełnie nowe, można było zainstalować napęd DVD w komputerze stacjonarnym. Jednak dzisiejsze procesory nie były wystarczająco mocne, aby dekodować strumienie wideo i audio DVD bez jąkania. Początkowo do przeprowadzenia dekodowania wymagana była specjalistyczna karta PCI. To był specjalistyczny sprzęt, który został zbudowany specjalnie do dekodowania formatu DVD i nic więcej. Podobnie jak w przypadku grafiki 3D, nie tylko zapewniał więcej zasobów obliczeniowych, ale został specjalnie dostosowany do tego zadania, dzięki czemu odtwarzanie DVD jest płynne.
Gdy procesory stały się znacznie potężniejsze, stało się możliwe dekodowanie płyt DVD „w oprogramowaniu”, co oznacza „na komputerze ogólnego przeznaczenia”. Nawet z mniej wydajnym procesorem, miał wystarczającą optymalizację szybkości i przepustowości, aby odtwarzanie DVD działało zgodnie z oczekiwaniami użytkowników.
Mamy teraz procesory setki, a nawet tysiące razy mocniejsze 2, niż kiedy wprowadzono DVD. Kiedy pojawił się Blu-ray, nigdy nie potrzebowaliśmy specjalistycznego sprzętu, ponieważ sprzęt ogólnego przeznaczenia był wystarczająco mocny, aby poradzić sobie z tym zadaniem.
Robiąc oba
Nowoczesne procesory Intel wyspecjalizowane instrukcje dla H.264 kodowania i dekodowania. Jest to część trendu, w którym procesory ogólnego przeznaczenia zyskują wyspecjalizowane funkcje, wszystkie w tym samym układzie. Nie potrzebujemy osobnej karty PCI Express, aby efektywnie dekodować H.264 tak jak w przypadku płyt DVD wcześnie, ponieważ procesory zawierają podobne obwody.
1 GPU oznacza procesor specjalnie zaprojektowany do wykonywania obliczeń graficznych. Starsze karty graficzne 2D nie były procesorami graficznymi: były po prostu buforami ramek z przetwornikami cyfrowo-analogowymi do rozmowy z monitorem. Różnica polega na tym, że procesory graficzne zawierają wyspecjalizowane procesory, które wyróżniają się w niektórych rodzajach obliczeń, a wraz z upływem czasu same są teraz programowalne (shadery). Sprzęt graficzny zawsze zawierał wyspecjalizowany zespół obwodów konieczny do konwersji danych w buforze ramki do formatu, który można wyprowadzać przez kabel (VGA, DVI, HDMI, DisplayPort) i rozumieć przez monitor. Nie ma to znaczenia w dyskusji o odciążaniu obliczeń do specjalistycznego sprzętu.
2 DVD-Video zostało wydane w 1997 roku, w czasie, gdy Pentium 2 było również nowo wydane. Był to czas, gdy moc procesorów gwałtownie rosła: można było rozważyć nowy komputer P2 z dekoderem DVD lub zainstalowanie go w nieco starszym P1. Porównaj to do współczesnej 6 Core i7 przy użyciu listy MIPS Wikipedii , a nowoczesny procesor jest gdzieś pomiędzy 590 a 1690 razy szybszy. Jest to częściowo spowodowane szybkością zegara, ale także przejściem na wiele rdzeni jako standardem, a także nowoczesnymi procesorami wykonującymi znacznie więcej pracy na rdzeń na takt zegara. Istotne jest również to, że wraz z postępem technologii Intel (który dominuje na rynku komputerów stacjonarnych i serwerów x86) dodaje specjalne instrukcje, aby przyspieszyć operacje, które chcą wykonywać użytkownicy komputerów stacjonarnych (np. Dekodowanie wideo).
źródło
Dziwi mnie, że nikt nie wspomniał o jednym z najbardziej rażących przykładów: radiu programowym.
Gdyby wziąć współczesny smartfon w przeszłość jakieś 50 lat i pokazać go kompetentnemu inżynierowi z połowy lat 60. XX wieku, byłby w stanie go zrozumieć. Czy superkomputer można sprowadzić do czegoś, co mieści się w kieszeni? Czek. Czy możesz mieć w pakiecie ekwiwalent kolorowego telewizora o bardzo wysokiej jakości? Czek. Czy jest o wiele szybszy, czy ma o wiele więcej pamięci itp. Niż komputery z tamtych czasów? Czek. Czy zostało napisane oprogramowanie, które może wykonywać tak złożone funkcje? Czek.
Ale powiedz temu kompetentnemu inżynierowi, że tak przy okazji, ten pakiet zawiera zestaw niezwykle wydajnych nadajników i wrażliwych odbiorników: cyfrowy transceiver z rozproszonym widmem, który może jednocześnie nadawać i odbierać na wielu kanałach, komunikując się z wieżą infrastruktury, która może znajdować się w odległości wielu kilometrów ; inny cyfrowy nadajnik-odbiornik, który komunikuje dane o wysokiej prędkości ze stacją bazową gdzieś w budynku; jeszcze jeden cyfrowy transceiver, który komunikuje się z urządzeniami do noszenia o niskiej mocy; a inny odbiornik, który odbiera słaby sygnał z satelity na pośredniej orbicie ... nazwałby cię kłamcą.
Nazwałby cię kłamcą, ponieważ wie, że odbiorników o tak wysokiej czułości nie da się zbudować bez mnóstwa dostrojonych obwodów, które odfiltrują sąsiednie stacje i wybiorą interesujący sygnał. I że takie obwody wymagają części o rozmiarach zdefiniowanych bardziej przez fizykę niż technologię, takich jak kondensatory i cewki indukcyjne.
Trzeba by wtedy wyjaśnić, że w nowoczesnym radiu większość z nich odbywa się w oprogramowaniu. Że po tym, jak sygnał przychodzący z anteny zostanie przekształcony na częstotliwość pośrednią i nieco wzmocniony, jest następnie próbkowany przez przetwornik analogowo-cyfrowy; a kolejne przetwarzanie odbywa się w cyfrowym procesorze sygnałowym. Całe to strojenie, to filtrowanie, które wymagało ton sprzętu w old-schoolowym radiu high-end, można opisać w postaci równań matematycznych; a jeśli można to zrobić, równania te mogą być wykonywane w czasie rzeczywistym przez DSP.
Myślę, że jest to jeden z najbardziej rażących przykładów oprogramowania zastępującego sprzęt. W rezultacie nosimy w naszych smartfonach smartfony, które nawet dla kompetentnego inżyniera z lat 60. przypominałyby magiczną sztuczkę.
W porównaniu z tym pomysł, że prosta logika otwierania drzwi garażowych, elektronicznej wagi łazienkowej lub pilota do telewizora jest obecnie realizowana za pomocą mikrokontrolera ogólnego zastosowania i oprogramowania zamiast niestandardowego sprzętu, wydaje się prawie trywialna (i na pewno byłaby to dużo bardziej zrozumiałe dla naszego hipotetycznego inżyniera z lat 60. niż radio zdefiniowane programowo).
źródło
Rozważ ten obwód:
Jest to Flip Flop, czyli Bistable Multivibrator. Można go zastąpić następującym kodem:
źródło
Oznacza to dokładnie, jak to brzmi.
Szczególnie znanym przykładem jest dysk Disk II zaprojektowany przez Steve'a Woźniaka dla Apple II:
Kolejny przykład, który prawdopodobnie znasz lepiej: emulatory. Zastępują całe zestawy sprzętu (i oprogramowania) całkowicie w oprogramowaniu. Procesory, różne układy sterujące, a nawet urządzenia pamięci.
Teraz nie możesz wyeliminować całego sprzętu, w końcu potrzebujesz czegoś do uruchomienia oprogramowania. Ogólnie rzecz biorąc, każde zadanie logiczne, które można zaimplementować w sprzęcie, można również zaimplementować w oprogramowaniu (wydajność może nie być identyczna, może być wolniejsza, szybsza lub w różnych sytuacjach, w zależności od sprzętu i implementacji).
źródło
Innym obszarem, w którym jest to prawdą, są syntezatory.
Wczesne syntezatory były w 100% analogowym sprzętem, który generował przebiegi bezpośrednio, a następnie modyfikował je za pomocą układów (filtry, wzmacniacze itp.). Można było cyfrowo zsyntetyzować dźwięk, ale wymagało to zasobów obliczeniowych , na które przeciętny człowiek nie mógł sobie pozwolić (rzeczywisty komputer mainframe i niestandardowy sprzęt konwertera cyfrowo-analogowego).
W miarę ulepszania wytwarzania chipów syntezatory zmieniły się z czystego analogu na chipy syntezatora sterowane sygnałami cyfrowymi, ale nadal generujące sygnały analogowe, a następnie na czystą syntezę cyfrową (odtwarzanie próbek, synteza FM , prawdziwa synteza addytywna itd.).
Obecnie procesory są wystarczająco tanie i wystarczająco szybkie, aby umożliwić programistom tworzenie komputerowych wersji klasycznych syntezatorów analogowych, które dokładnie duplikują zachowanie oryginalnych obwodów poprzez symulację ich zachowania w czasie rzeczywistym - w rzeczywistości telefony i tablety mogą teraz działać wystarczająco szybko, aby uruchom te re-kreacje; Korg IMS 20 jest przykładem.
Zarówno klasyczne syntezatory, jak i nowe są dostępne jako wtyczki VST lub AU do cyfrowych programów audio, takich jak Ableton Live, Logic lub Cubase, które zapewniają dostęp do syntezatorów osobom, które inaczej nie miałyby miejsca lub pieniędzy, aby móc z nich skorzystać im.
Edycja: W tym miejscu powinienem również wspomnieć o VCVRack , który symuluje analogową syntezę modułową w czasie rzeczywistym. To krok do przodu w stosunku do wielogodzinnego renderowania przez kilka sekund muzyki.
źródło
>:*3
.W dawnych czasach cięcie było dość wyraźne. Większość rzeczy wymagających szybkiego wykonania musiała zostać zaimplementowana sprzętowo. Weźmy na przykład multiwibrator, który generuje częstotliwość. Nie tak dawno temu potrzebowałeś kilku tranzystorów, kondensatorów i ewentualnie kwarcu, aby wygenerować (stałą) częstotliwość. Teraz są tanie mikrokontrolery, które kosztują zaledwie kilka centów lub więcej. Ponieważ są one tak szybkie, możesz ich łatwo użyć do stworzenia multiwibratora. Co więcej, możesz łatwo kontrolować za pomocą oprogramowania, jaką częstotliwość generować, gdzie w przeszłości trzeba było lutować inny sprzęt. Chociaż przechodząc przez pewną (ale teraz dość wysoką) częstotliwość nadal potrzebujesz czystego sprzętu. Widzisz więc, istnieje granica między nimi, ale część, którą możesz rozwiązać za pomocą oprogramowania, rośnie (wykładniczo).
Edycja Właściwie „Oprogramowanie może zastąpić sprzęt” nie jest naprawdę poprawne. Chodzi o to, że sprzęt jest tak potężny, że można go używać do uruchamiania oprogramowania, które emuluje sprzęt. Dlatego zamiast kilku prostych, ale statycznie lutowanych tranzystorów używasz milionów tranzystorów, które rozumieją oprogramowanie. Termin powinien brzmieć „Sprzęt może teraz rozumieć oprogramowanie”.
źródło
Porównanie gry zręcznościowej Tank (około 1976 r.) I domowej konsoli Combat (1977) daje dobry przykład tego, jak oprogramowanie może zastąpić sprzęt nawet 40 lat temu.
Zręcznościowa gra Tank (około 1976 r.) Pozwalała dwóm graczom na objeżdżanie czołgów i strzelanie do siebie. Nie zawierał żadnego procesora, ale zamiast tego posiadał sprzętowe liczniki do śledzenia poziomych i pionowych pozycji wiązki elektronów, czołgów i strzałów, a także wyników gracza, kątów obrotu, upływającego czasu. Miał wbudowaną logikę do generowania danych bitmapowych związanych z wynikami, kształtami czołgów graczy i tłem.
Komputerowy system wideo Atari 2600 (domowa konsola do gier z ok. 1977 r.) Zawiera sprzęt do śledzenia poziomych (ale nie pionowych!) Pozycji dwóch obiektów bitmapowych i czterech generatorów impulsów o zmiennej szerokości, utrzymywania i odliczania 20-bitowego minimum -Rozdzielczość wzoru graficznego pola gry, a także dwóch 8-bitowych wzorów o wysokiej rozdzielczości, kolorów zatrzasków dla graczy, tła i pola gry oraz wykrywania kolizji między różnymi obiektami. Zawierał również programowalny zegar ogólnego przeznaczenia, ale sprzęt miał niewiele więcej niż powyższe. Niemniej jednak, mimo że sprzęt jest znacznie prostszy niż w grze Tank, kaseta 2K ROM Combat pozwala 2600 grać w tę samą podstawową grę, ale z wieloma innymi funkcjami (różnorodne pojazdy i tła, odbijające się strzały itp.), Ponieważ może zastąpić większość automatów do gier ” s sprzęt z oprogramowaniem. Co ciekawe, mimo że Atari 2600 jest prawdopodobnie drugą najprostszą platformą sprzętową dowolnego komercyjnie sprzedawanego domowego systemu gier wideo opartego na mikroprocesorach, jest tak dobrze zaprojektowany, aby ułatwić wymianę sprzętu na oprogramowanie, które po prawidłowym zaprogramowaniu może krążyć wokół wielu jego konkurenci.
źródło
Wyrażenie „oprogramowanie może zastąpić sprzęt” jest ostrzeżeniem, aby nie próbować rozwiązywać problemów ze sprzętem, chyba że istnieją bardzo wyraźne zalety. Oprogramowanie jest 10x-50x tańsze w tworzeniu i prawie nieskończenie tańsze w produkcji na jednostkę niż sprzęt. Wykonanie X w sprzęcie nie będzie zwycięskim rozwiązaniem, chyba że X naprawdę nie da się skutecznie zrobić w oprogramowaniu.
źródło
Niuans został dobrze rozwiązany, ale myślę, że jest to przeszkodą dla OP, ponieważ nie można zastąpić sprzętu oprogramowaniem. „Sprzęt” niezmiennie obejmuje znacznie mniej „sprzętu” niż rozwiązanie „oprogramowania”.
Różnica polega na tym, że logikę procesu / algorytmu / obliczenia można przenosić między sprzętem a oprogramowaniem. Podano wiele przykładów, więc nie będę się rozwijał.
źródło
Na wczesnych komputerach z pamięcią wirtualną trzeba było zmienić zadanie na brak TLB, aby załadować nowy wpis strony. Oprogramowanie OS odnalazłoby prawidłowy proces i przejrzałoby tabele stron, znajdując prawidłowy wpis i zapisując go z powrotem w TLB. Przed powrotem do pierwotnego procesu, aby kontynuować.
Teraz większość procesorów korzysta ze sprzętu do wykonywania procesu, czytania tabeli stron, chodzenia po tabelach stron i aktualizowania TLB.
Obie metody muszą korzystać z oprogramowania do obsługi błędów stron, ale ponieważ błędy TLB często przewyższają liczbę błędów stron, sprzęt nadal przewyższa oprogramowanie.
W generel, jeśli masz prostą procedurę, którą musisz wykonywać wielokrotnie, znajdziesz wymianę sprzętu. Jeśli masz skomplikowane rozwiązanie sprzętowe ze skomplikowanym przepływem sterowania, możesz uprościć sprzęt za pomocą oprogramowania.
źródło
Istnieje wiele przypadków, w których oprogramowanie może zastąpić sprzęt i odwrotnie.
Klasycznym tego przykładem jest tablica matematyczna. Zamiast za każdym razem obliczać wyniki dla wyrażeń wspólnych, są one przechowywane wewnętrznie w koprocesorze matematycznym i po prostu określane w razie potrzeby.
Większość z nich prawdopodobnie już zna filtry audio i oprogramowanie, które może naśladować prawdziwe instrumenty i urządzenia, takie jak pedały lub wzmacniacze.
Każdy sprzęt, który można stworzyć wirtualnie, zostanie użyty, jeśli będzie szybszy i / lub tańszy niż fizyczny odpowiednik.
źródło
W rachunkowości wydrukowaną fakturę (na przykład) można teraz przesyłać elektronicznie, a oprogramowanie zaczyna obsługiwać odbiór tego rodzaju dokumentów i ich przetwarzanie w coraz większym stopniu. Jest to doskonały przykład zastąpienia sprzętu oprogramowaniem.
źródło