ZX Spectrum > RÓŻNOŚCI

Wojny religijne: co jeszcze jest retro, czy FPGA to emulacja itp.

(1/3) > >>

Atlantis:

--- Cytat: tapy w 2023.03.17, 08:52:16 ---Rozumiem, że używanie współczesnych komponentów może się kłócić z wyobrażeniem retro, ale od tego się nie ucieknie - w monitorze masz zdecydowanie bardziej wydajny procesor niż Z80, użycie zwykłej karty SD lub CF zawierającej wewnątrz bardziej złożony komputer niż cały system Z80 w którym zostałby użyty,...
--- Koniec cytatu ---

Wiem, ale jednak to jest dużo mniejsza granica. Karta CF sama w sobie jest urządzeniem mocno retro, które zostało projektowane w taki sposób, aby móc pracować na magistralach bardzo starych urządzeń.
Od strony użytkownika jest to czarna skrzynka. Czterdzieści lat temu takie urządzenia jak HDD, FDD czy nawet klawiatura też często były obsługiwane przez osobny mikrokontroler. Do 8242 przecież można podłączyć zewnętrzny EPROM i wykonać na nim własny kod, chociaż wewnętrzna pamięć programowana maską zawiera firmware do obsługi klawiatury.

Wszystko sprowadza się do tego, żeby przeskok nie był za duży. Jeśli buduję system na 8080 czy Z80 to raczej nie znajdę do niego oryginalnego dysku twardego z epoki. Zresztą nawet gdybym znalazł, to pewnie padłby po kilku tygodniach używania. Natomiast karta CF jest już dostatecznie blisko. Osobny linuksowy komputer emulujący pamięć masową byłby już przesadą, bo równie dobrze mógłbym na nim emulować całość systemu.

Generalnie jest kilka poziomów, których wolę się trzymać.
1. Najbardziej postawowy to ten, gdzie na poziomie architektury wszystko ma pozostawać jak najbliżej realiów epoki. Czyli procesor i układy peryferyjne mają postać fizycznych chipów. Możliwe są drobne odstępstwa dla wygody - jak właśnie użycie karty CF, układów CMOS, pamięci SRAM, przetwornicy impulsowej w zasilaczu albo programowalnych układów logicznych GAL. Jednak żadnych współczesnych mikrokontrolerów, CPLD czy FPGA. Tak wygląda większość moich autorskich konstrukcji, do tej kategorii łapią się też takie projekty jak Harlequin.
2. Mocno uwspółcześnione projekty, gdzie procesor nadal jest fizyczny ale spora część logiki jest odtworzona w jakimś CPLD/FPGA, a rolę pamięci masowej pełni karta SD. To nadal w sumie oryginalna architektura, ale mocno udoskonalona i czerpiąca ze współczesnych możliwości technologicznych. Nadal żadnych mikrokontrolerów, poza tymi, które i tak są obecne w "czarnych skrzynkach" (np. karcie SD).
3. Pójście na całość i zaimplementowanie wszystkiego w FPGA (np. ZX Uno). To nadal nie emulacja (bo logika jest zaimplementowana w krzemie, tylko programowalnym, a nie algorytmie wykonywanym na CPU), architektura pozostaje bliska oryginałowi, tylko wszystko jest zrobione na współczesnej technologii.

Problem zaczyna się dla mnie wtedy, gdy projekt zaczyna emulować fragmenty oryginalnego hardware'u w kawałkach softu wykonywanego na współczesnych mikrokontrolerach. Szczególnie, jeśli te mikrokontrolery równie dobrze mogłyby emulować całą maszynę - a to można powiedzieć o wszystkich Raspberry Pi, czy nawet "małych" ARM-ach albo ESP32.

Dlatego mogąc wykorzystać oryginalny sterownik klawiatury i monitora, będę je preferował. ;)

tapy:
Czym się różni logika zrealizowana na FPGA od procesora? W obu przypadkach masz kod ładujący, macierz bramek czy cpu, ta różnica staje się bardzo płynna. Często współczesne mikrokontrolery posiadają już elementy FPGA. Czarna skrzynka ESP32 i karty CF jest tak samo skomplikowana, jedyną różnicą jest że jeden system realizuje konkretne zadanie a drugi jest uniwersalny. Potraktuj metalową puszkę ESP tak samo jak puszkę karty CF :D
ZX Unu to jednak emulator, algorytm wykonuje macierz bramek, zaprogramowanych językiem wysokiego poziomu. Myślę że C i VHDL jest tak samo dalekie od naszych 8-bitów.

Atlantis:

--- Cytat: tapy w 2023.03.17, 15:11:16 ---Czym się różni logika zrealizowana na FPGA od procesora?
--- Koniec cytatu ---

Różnica jest zasadnicza. W przypadku CPLD/FPGA masz macierz fizycznych bloków logicznych, istniejących w krzemie. Programujesz połączenia między nimi. Jest to więc relatywnie bliską operacją do fizycznego odtworzenia jakiegoś układu z układów scalonych. Z tą różnicą, że dzieje się to od nowa za każdym razem po włączeniu zasilania. Do tego masz główną zaletę realizacji jakiegoś zadania w fizycznym układzie logicznym - poszczególne operacje wykonują się równolegle, w miarę propagacji sygnałów.
W przypadku CPU tworzona jest programowa reprezentacja oryginalnego sprzętu. Bloki logiczne nie istnieją fizycznie w krzemie, a jedynie są reprezentowany jako abstrakty w pamięci, obsługiwane przez algorytm wykonywany na procesorze. A ponieważ (jednordzeniowy) procesor potrafi naraz robić tylko jedną rzecz, musisz dysponować znacznie szybszym taktowaniem, aby stworzyć pozory, że wszystkie te wirtualne bloki realizują swoje zadanie na czas. A i tak często spełnienie wszystkich delikatnych zależności czasowych jest wielkim problemem.



--- Cytuj --- W obu przypadkach masz kod ładujący, macierz bramek czy cpu, ta różnica staje się bardzo płynna.
--- Koniec cytatu ---

Właściwie tutaj podobieństwo się zaczyna i kończy. Bo w FPGA masz kod ładujący na początku, potem (po skonfigurowaniu) taki układ działa już jak normalna konstrukcja z układów logicznych. Emulator na CPU działa w oparciu o sekwencje instrukcji, próbujące naśladować mechanikę oryginalnego sprzętu.



--- Cytuj ---Często współczesne mikrokontrolery posiadają już elementy FPGA.
--- Koniec cytatu ---

Tak, ale należy je traktować jako dodatkowe (programowalne) peryferium. Nie znaczy to, że można pomiędzy tymi dwiema rzeczami postawić znak równości. :)



--- Cytuj ---Czarna skrzynka ESP32 i karty CF jest tak samo skomplikowana, jedyną różnicą jest że jeden system realizuje konkretne zadanie a drugi jest uniwersalny. Potraktuj metalową puszkę ESP tak samo jak puszkę karty CF :D
--- Koniec cytatu ---

Karta CF jest czarną skrzynką w tym sensie, że nie mogę jej programować. A przynajmniej nie w łatwy sposób. Jest to po prostu pudełko przyjmujące sygnały na wejściu i zwracające odpowiednie sygnały na wyjściu. Do tego robi to w taki sam sposób, jak stare dyski twarde.  I tak- wiem, że jest to mocno subiektywne odczucie, jednak po prostu emulowanie sporego kawałka oryginalnego sprzętu w sofcie odpalonym na współczesnym MCU ma tyle samo wspólnego z retro co emulowanie całości - fajny i wygodny sposób na uruchomienie starego softu, ale trudno mówić w tym przypadku o technice retro. ;)


--- Cytuj ---ZX Unu to jednak emulator, algorytm wykonuje macierz bramek, zaprogramowanych językiem wysokiego poziomu. Myślę że C i VHDL jest tak samo dalekie od naszych 8-bitów.

--- Koniec cytatu ---

W żadnym wypadku. W przypadku VHDL-a nie masz algorytmu. Masz opis zadania realizowanego sprzętowo, za pomocą układu z elementów logicznych. Jest to jedną z podstawowych rzeczy, do jakich trzeba się przyzwyczaić ucząc się VHDL-a czy Veriloga - pisany kod nie jest sekwencją instrukcji uruchamianych po sobie, ale opisem struktury. Zależności które tam opiszemy będą zachodziły równolegle, z uwzględnieniem czasów propagacji. Taki kod można spokojnie przetłumaczyć na schemat złożony z bramek i może on służyć jako punkt wyjścia do prototypowania układów ASIC. Nie 1:1, bo występują istotne różnice technologiczne, ale pierwszym etapem przy projektowaniu cyfrowego ASIC-a często jest właśnie zaimplementowanie tego w VHDL-u albo Verilogu.
FPGA nie ma wiele wspólnego z programową emulacją. Ma za to wiele wspólnego z technologią w jakie były produkowane takie układy jak ULA do ZX Spectrum czy ZX81. Tam krzemowa struktura zawierała określony zestaw uniwersalnych bramek. Potem na taką strukturę nanoszono maskę z połączeniami, odpowiadającymi potrzebom konkretnego odbiorcy. W przypadku FPGA różnica jest taka, że te połączenia są konfigurowalne za każdym razem przy starcie układu.

tapy:
W kwestii FPGA, mam inne zdanie, to emulacja, bo załadowanie wsadu czyni ten układ Z80, by za chwilę, po jego zmianie stał się np. 6502. Dokładnie tak samo jak bym to zrobił na współczesnym CPU, inny plik z dysku i mam nowy emulator.

I to jest właśnie subiektywna ocena czym jest retro, jedni uważają że komputer w karcie CF jest OK, inni już widzą w tym wydajny system przewyższający swoją mocą obliczeniową dowolny 8-bitowy sprzęt retro.

Atlantis:

--- Cytat: tapy w 2023.03.17, 17:21:19 ---W kwestii FPGA, mam inne zdanie, to emulacja, bo załadowanie wsadu czyni ten układ Z80, by za chwilę, po jego zmianie stał się np. 6502. Dokładnie tak samo jak bym to zrobił na współczesnym CPU, inny plik z dysku i mam nowy emulator.
--- Koniec cytatu ---

Tyle tylko, że tutaj jest jedna, zasadnicza różnica. Układy FPGA wyewoluowały z układów takich jak ULA, gdzie produkcja składała się z dwóch etapów: najpierw tworzyło się krzemową płytkę z uniwersalnym zestawem bramek, a potem nanosiło się na tę płytkę połączenia w zależności od tego, co było potrzebne odbiorcy. Układ był programowalny, ale jednorazowo i to na etapie produkcji.
Potem powstały podobne układy, których programowanie polegało na jednorazowym przepalaniu niepotrzebnych połączeń - układ można było zaprogramować tylko raz, dysponując odpowiednim sprzętem, ale nie musiało się to odbywać na etapie procesu produkcyjnego. W końcu zaczęły powstawać coraz bardziej skomplikowane układy GAL/PAL/CPLD, w których połączenia można było wielokrotnie przestawiać elektrycznie, w oparciu o konfigurację zapisaną w pamięci flash. Ta pamięć zawiera tylko tę konfigurację, a nie żaden wykonywany program - nie można więc mówić o emulacji. To znaczy inaczej - oczywiście pamięć może zawierać także i program, który uruchomimy CPU zbudowanym z bramek wewnątrz FPGA, ale wcale nie musi.
Współczesne układy FPGA różnią się tylko tym, że są (dużo) większe i niekiedy pozwalają na dokonywanie rekonfiguracji podczas działania.

Programowa emulacja polega na czymś zupełnie innym - to proces, w którym oryginalny hardware jest odwzorowywany jako soft wykonywany na procesorze. To jest co najmniej kilka warstw abstrakcji wyżej. W przypadku FPGA masz po prostu załadowanie konfiguracji z pamięci, która tworzy tymczasową, ale jak najbardziej sprzętową instancję danej architektury. W przypadku emulacji masz programowe odwzorowanie, obsługiwane przez jakiś zestaw bibliotek, działających na jakimś systemie operacyjnym, uruchomionym na jakimś procesorze. To nie jest kwestia subiektywnej interpretacji. To są obiektywne fakty. Te słowa mają dość konkretne znaczenia. ;)

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej