tryby rzeczywistości 6/9 #Małpowanie pamięci;

Link do artykułu: tryby rzeczywistości 6/9 #Małpowanie pamięci; – Zarobmy.se

//wróć do spisu treści; tekst jest fragmentem większej całości; #Małpowanie pamięci; To jest druga rzecz zapewniająca producentom maści na ból dupy dochody, nad pierwszą przeszliśmy do porządku dziennego, tutaj się nie da. To wyjdzie na końcu. Bo to jest pierwsza zwirtualizowana rzecz. BIOS startuje z 64kilo. To jest coś co Tygrysek swoim małym, C64 rozumkiem ogarnąć potrafi. Może ciasno, ale sobie poradzę. Jak tego było 128, a później 256 na amisiach – to jest do ogarnięcia moim rozumkiem. To nie jest jakaś epicka liczba danych. Ponieważ umiem robić rozgałęzienia na takich wąskich przepustach logicznych (jak dwadzieścia kabelków) to gdy klepię…

3 Likes

Ej, ale to nie jest tak.
Przestrzeń adresowa 8086 jest 1MB / 20bitowa i to jest własnie 16*segment:word + offset:word. W sensie fizycznie mamy dwa słowa 16bitowe na adres. Natomiast rzeczywiście większość operacji na 8086 jest wewnątrz danego segmentu, więc używa tylko near (16-bit, 64KB) pointerów. Rejestry DS, CS, SS.

Pierwsze to klasyczny real-time OS jak DOS. A co do drugiego, to nie zapominajmy, że buffer overrun to główne źródło nieszczęść i my w sumie nie chcemy by była pełna tożsamośc kodu i danych, choć niby to te same 0 i 1 i na 8086 w zasadzie nie ma żadnej różnicy (na CoreWars nie ma różnicy jeszcze bardziej)

2 Likes

Tak.

Dlatego w disklajmerze na początku nabazgrałem, że nie będę dzielił zapałki na czworo big/lite endian.

Ale w trakcie startu kompa masz tylko 16bit word. RAM jest rekonfigurowany przez sterownik dopiero po odpaleniu rozszerzenia 32 i 64. Bo kabli na adresowanie by brakło. RAM jest obecnie i tak dostosowany do pracy w 64, więc ta “rekonfiguracja” to nie jest jak kiedyś, że sterownik przesuwa adresowanie, tylko podłącza kable do każdego word robiąc Nword.

Historycznie prawda, obecnie już nie, bo rdzeni jest >1, poziomów cache ile wlezie i pomiędzy nimi taśmociągi, a przed wejściem na rdzeń jest dekoder instrukcji.

Więc:

Byłaby tylko gdybyś zrobił scope na konkretny model i konfigurację klocka. Można w kompilatorze tak zrobić, ale trzeba mieć powód, żeby w ogóle wiedzieć co się robi :slight_smile:

Interpretacja w urządzeniach wewnątrz rdzenia daje wyjście bezpośrednio na rejestr i wtedy:

Dlatego właśnie to co piszesz. Tylko real time OS nazywa się uops.

Oprogramowanie jest abstrakcją mechanizmu pod spodem. Łatwiej je zmieniać więc zazwyczaj efektywniej rozwiązuje problem co mechanizm ma robić i w jakiej kolejności.

Kiedy już soft ma pewien stopień doskonałości to jest zamieniany w krzem i implementowany w uops. Akurat te proste kwestie adresowania i zarządzania dostępem są policzalne, więc dość szybko ten poziom doskonałości przeniósł kierownika pamięci do krzemu. Wtedy to było 1=1. Dzięki temu można było nałożyć warstwę abstraktu user memory, kernel memory, process memory z silnym przekonaniem, że pamięć jest zwirtualizowane i krzem zadba o adresy fizyczne.

Obecnie poziom wirtualizacji jest taki, że nawet kernel bezpośrednio opiera się na grzecznych podaniach get/set zamiast na assesorach włażących z buta.

2 Likes