ROZDZIAŁ TRZECI ORGANIZACJA SYSTEMU, INFORMATYKA, „THE ART OF ASSEMBLY LANGUAGE” [PL]
[ Pobierz całość w formacie PDF ]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
WYŁĄCZNOŚĆ DO PUBLIKOWANIA TEGO TŁUMACZENIA
POSIADA
RAG
„THE ART OF ASSEMBLY LANGUAGE”
tłumaczone by: KREMIK
konsultacje naukowe: NEKRO
wankenob@priv5.onet.pl
nekro@pf.pl
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ROZDZIAŁ TRZECI:
ORGANIZACJA SYSTEMU
Napisanie nawet skromnego programu w języku asemblera dla 80x86 wymaga znajomości rodziny 80x86.
Napisanie
dobrego
programu w języku asemblera wymaga sporej wiedzy o wykorzystywanym sprzęcie. Niestety
wykorzystywany sprzęt nie jest spójny. Techniki które są kluczowe dla 8088 mogą nie być przydatne dla systemów
80486. Podobnie, techniki programistyczne które pozwalają uzyskiwać większą wydajność na chipach 80486 mogą
nie być pomocne we wszystkim na 80286.Szczęśliwie,niektóre techniki programistyczne pracują dobrze niezależnie
jakiego mikroprocesora używamy. Ten rozdział omawia wpływ jaki sprzęt ma na wydajność programów
komputerowych
3.0 WSTĘP
Ten rozdział opisuje podstawowe komponenty które stanowią system komputerowy:CPU,pamięć, I/O (
wejście/wyjście ) i magistrale które je łączą. Chociaż możemy napisać program który nie zna tych pojęć jednak
program na wysokim poziomie wymaga kompletnego zrozumienia tego materiału.
Ten rozdział zaczyna się od omówienia organizacji magistral i pamięci. Te dwa komponenty
sprzętowe,będą prawdopodobnie miały większy wpływ na wydajność twojego programu niż szybkość CPU.
Zrozumienie organizacji systemu magistral pozwoli ci zaprojektować struktury danych działające z maksymalną
szybkością. Podobnie wiedza o charakterystycznych właściwościach pamięci, rejonach danych i działaniu na
pamięci podręcznej cache pomoże stworzyć ci program działający tak szybko jak to możliwe. Oczywiście, jeśli nie
interesuje cię pisanie kodu szybko wykonywalnego możesz opuścić to omówienie jednakże większość ludzi
troszczy się o szybkość lub inaczej ta wiedza jest dla nich użyteczna.
Niestety, rodzina mikroprocesorów 80x86 jest złożoną grupą i często przytłacza początkujących. Dlatego
też ten rozdział będzie używał czterech hipotetycznych członków z rodziny 80x86: mikroprocesory 886,8286,8486
i 8686.Przedstawiają one uproszczone wersje chipów 80x86 i pozwalają omówić różne cechy architektury bez
grzęźnięcia poprzez ogromy zbiór instrukcji CISC. Ten tekst używa hipotetycznych procesorów x86 do opisu pojęć
kodowania instrukcji, trybów adresowania ,wykonywania sekwencyjnego, kolejki rozkazów
,
potokowania i operacji
superskalarnych. Rzecz jasna, tych pojęć nie musisz się uczyć jeśli chcesz pisać tylko poprawne programy.
Jednakże ,jeśli chcesz pisać dobrze ,szybkie programy zwłaszcza na zawansowanych procesorach takich jak
80486,Pentium i innych, musisz nauczyć się tych pojęć.
Niektórzy mogą argumentować że ten rozdział stanie się zbyt skomplikowany w związku z architekturą
komputera. Będą uważać, że taki materiał powinien ukazać się w książce o architekturze, nie zaś w książce o
programowaniu w języku asemblera. Nie jest to dalekie od prawdy! Napisanie dobrego programu asemblerowego
wymaga solidnej wiedzy o architekturze. W związku z tym taki nacisk na architekturę komputera w tym rozdziale.
3.1 PODSTAWOWYY SYSTEM KOMPONENTÓW
Podstawowy, gotów do działania, projekt systemu komputerowego
nazywany jest jego architekturą. John
von Neumann,pionier w projektowaniu komputerów, dał podstawy architektury większości komputerów dzisiaj
używanych.Na przykład rodzina 80x86 używa Architektury Von Neumanna (VNA). Typowy system Von
Neumanna zawiera trzy ważne komponenty: CPU (jednostka centralna),pamięć i wejścia/wyjścia (I/O).Sposób w
jaki projektant systemu łączy te trzy komponenty wpływa na wydajność systemu. (zobacz rysunek 3.1).
W maszynach VNA,takich jak rodzina 80x86, CPU bierze udział we wszystkich zachodzących zdarzeniach
Wszystkie obliczenia zachodzą wewnątrz CPU. Dane i instrukcje CPU tkwią w pamięci dopóki nie zażyczy ich
sobie CPU. Dla CPU ,większość urządzeń I/O, wygląda jak pamięć ponieważ może przechowywać dane
Rysunek 3.1: Typowa maszyna Von Neumanna
z urządzenia wyjściowego i czytać dane z urządzenia wejściowego. Ważną różnicą pomiędzy położeniem w pamięci
a położeniem I/O jest fakt że położenie I/O jest generalnie powiązane z zewnętrznymi urządzeniami.
3.1.1 SYSTEM MAGISTRAL
System magistral łączy różne komponenty maszyny VNA.Rodzina 80x86 ma trzy ważne magistrale:
magistralę adresową, magistralę danych i magistralę sterującą. Magistrala jest zbiorem przewodów,którymi sygnały
elektryczne są przesyłane między komponentami w systemie. Te magistrale różnią się między procesorami.
Jednak,każda magistrala przenosi porównywalne informacje we wszystkich procesorach, np. magistrala danych
może być inaczej zaimplementowana na 80386 niż 8088,ale obie przenoszą dane pomiędzy procesorem, pamięcią i
I/O.
Typowy system komponentów 80x86 używa standardowych poziomów logicznych TTL To znaczy, każdy
przewód na magistrali używa standardowego poziomu napięcia dla przedstawiania zera lub jedynki. Zawsze
możemy wyszczególnić zero i jeden zamiast poziomów elektrycznych ponieważ te poziomy różnią się dla różnych
procesorów (zwłaszcza laptopów).
3.1.1.1 MAGISTRALA DANYCH
Procesory 80x86 używają magistrali danych do przenoszenia danych pomiędzy różnymi komponentami w
systemie komputerowym. Rozmiar tej magistrali różni się znacznie w rodzinie 80x86.W rzeczywistości, ta
magistrala określa „rozmiar” procesora.
W typowym systemie 80x86,magistrala danych zawiera osiem,16,32 lub 64 linie .Procesory 8088 i 80188
mają ośmiobitową magistralę danych (osiem linii danych). Procesory 8086,80186,80286 i 80386SX mają
szesnastobitową magistralę danych. Procesory 80386DX,80486 i Pentium Overdrive mają 32-bitową magistralę
danych. Procesory Pentium i Pentium Pro mają 64-bitową magistralę danych Przyszłe wersje chipów
(80686/80786?) mogą mieć większe magistrale.
Mając ośmiobitową magistralę danych procesor nie jest ograniczony do ośmiobitowych typów danych. Po
prostu, procesor może uzyskać dostęp do jednego bajtu danych na cykl pamięci. (zobacz „Podsystem Pamięci” z
opisem cyklu pamięci)
“Rozmiar” procesora
Była spora różnica zdań pomiędzy inżynierami od sprzętu i oprogramowania dotycząca
rozmiaru procesorów takich jak 8088. Z perspektywy projektantów sprzętu,8088 jest
całkowicie ośmiobitowym procesorem – ma tylko osiem lini danych a jedna magistrala
danych jest kompatybilna z pamięcią i urządzeniami I/O zaprojektowanymi pod kątem
ośmiobitowych procesorów.Z drugiej strony,inżynierowie oprogramowania sprzeczają
się,że 8088 jest 16 bitowym procesorem.Z ich perspektywy nie można rozpoznać między
8088 (z ośmiobitową magistralą danych), a 8086 (który ma 16 bitową magistralę
danych).Istotnie,jedyna różnica jest w szybkości przy której te procesory działają;8086 z
16 bitową magisttralą jest szybszy.Ostaczne projektanci sprzętu wygrali.Pomimo faktu,że
inżynierowie oprgramowania nie mogą rozróżnić 8088 i 8086 w swoich
programach,nazywamy 8088 ośmiobitowym procesorem a 8086 16 bitowym
procesorem.Podobnie, 80386SX (który ma 16 bitową magistralę danych) jest procesorem
16 bitowym,podczas gdy 80386DX (który ma pełną 32 bitową magistralę danych) jest 32
bitowym procesorem.
Dlatego też ośmiobitowa magistrala w 8088 może przesyłać tylko połowę informacji na jednostkę czasu (cykl
pamięci) podobnie jak 16 bitowa magistrala danych w 8086.Zatem procesory z magistralą 16 bitową są naturalnie
szybsze niż procesory ośmiobitowe .Podobnie procesory 32 bitowe są szybsze niż te z 16- lub ośmiobitową
magistralą danych.Rozmiar magistrali danych wpływa na wydajność systemu bardziej niż jakakolwiek inna
magistrala.
Często słyszymy o procesorach nazywanych procesorami ośmio- ,16 ,32 lub 64 bitowymi.Podczas gdy są
umiarkowane kontrowersje dotyczące rozmiaru procesora, większość ludzi zgadza się że liczba linii danych w
procesorze określa jego rozmiar.Ponieważ w rodzinie 80x86 magistrale danych są szerokie na oiem,16,32 lub 64
bity większość danych również jest ośmio,16,32 lub 64 bitowych.Chociaż jest możliwe przetwarzanie danych 12
bitowych w 8088,wielu programistów przetwarza 16 bitów ponieważ procesor i tak i tak pobiera i manipuluje 16
bitami.Jest tak ponieważ procesor zawsze pobiera osiem bitów.Pobranie12 bitów wymaga dwóch ośmiobitowych
operacji na pamięci.Ponieważ procesor pobiera 16 bitów zamiast 12,większość programistów używa wszystkich 16
bitów.Ogólnie rzecz biorąc,manipulowanie danymi o długości 8,16,32 lub 64 bitów jest najbardziej wydajne.
Chociaż 16,32 lub 64 bitowe członkowie rodziny 80x86 mogą przetwarzać dane do szerokości magistrali
mogą jednak uzyskać dostęp do jednostek pamięci mniejszych niż osiem,16 lub 32 bity.Dlatego też, cokolwiek
zrobisz na małej magistrali danych,będzie zrobione równie dobrze na większej magistrali danych.;jednak można
uzyskać dostęp do pamięci szybciej i można uzyskać dostęp do większych kawałków danych w jednej operacji na
pamięci.Możesz przeczytać dokładnie o tym dostępie do pamięci trochę później (zobacz „Podsystem Pamięci”).
Tablica 17: Rozmiar magistrali danych procesorów 80x86
3.1.1.2 MAGISTRALA ADRESOWA
Magistrala danych w rodzinie procesorów 80x86 przesyła informacje pomiędzy kolejnymi komórkami
pamięci lub urządzeniami I/O a CPU.Tylko pozostaje pytanie :”Które komórki pamięci lub urządzenia I/O?”
Magistrala adresowa odpowiada na to pytanie.W celu rozróżnienia komórki pamięci i urządzeń I/O projektant
systemu przydziela unikalne adresy pamięci dla każdego elementu pamięci i urządzenia I/O.Kiedy program chce
uzyskać dostęp do jakiejś szczególnej komórki pamięci lub urządzenia I/O umieszcza odpowiedni adres na
magistrali adresowej.Zespół układów skojarzonych z pamięcią lub urządzeniem I/O rozpoznaje ten adres i wydaje
polecenie pamięci lub urządzeniu I/O odczytania danych lub umieszczenie danych na magistrali danych.W obu
przypadkach,wszystkie inne komórki pamięci ignorują to wywołanie.Tylko urządzenie,którego adres pasuje do
wartości na magistrali adresowej,odpowiada.
Z pojedynczą linią adresową,procesor mógł stworzyć dokładnie dwa unikalne adresy:zero i jeden.Z n
liniami adresowymi,procesor może stworzyć 2
n
unikalnych adresów (ponieważ jest 2
n
unikalnych wartości w n-
bitowej liczbie binarnej).Dlatego też liczba bitów na magistrali adresowej ustala maksymalną liczbę adresowalnej
pamięci i położenia I/O. 8088 i 8086,na przykład, mają 20 bitowe magistrale adresowe.Zatem,mogą one uzyskać
dostęp góra do 1,048,576 (lub 2
20
) komórek pamięci.Większa magistrala adresowa może uzyskać dostęp do większej
liczby komórek pamięci.8088 i 8086,na przykład,cierpią z powodu małej przestrzeni adresowej - ich magistrala
adresowa jest zbyt mała.Późniejsze procesory mają większe magistrale adresowe:
Tablica 18: Rozmiary magistrali adresowych rodziny 80x86
Przyszłe procesory 80x86 prawdopodobnie,będą wsparte 48 bitową magistralą adresową.Nadchodzi czas kiedy
większość programistów będzie uważać cztery gigabajty pamięci za zbyt małą.,chociaż dzisiaj uważają jeden
megabajt za niewystarczający. Na szczęście architektura 80386,80486 i późniejsze chipy uwzględniają łatwość
rozszerzenia do 48 bitowej magistrali adresowej przez segmentację.
3.1.1.3 MAGISTRALA STERUJĄCA
Magistrala sterująca jest zbiorem sygnałów które sprawdzają jak procesor komunikuje się z resztą
systemu.Rozważmy na chwilę magistralę danych. CPU wysyła dane do pamięci i przyjmuje dane z pamięci na
magistralę danych.Tu rodzi się pytanie,”Czy on wysyła czy przyjmuje?” Są dwie linie na magistrali sterującej,odczyt
i zapis,które wyszczególniają kierunek przepływu danych.inne sygnały zwierają system taktowania,linie
przerwań,linie stanu itd.Magistrale sterujące zmieniają się wraz z procesorami rodziny 80x86.Jednak niektóre linie
sterujące są powszechne we wszystkich procesorach i są warte krótkiej wzmianki.
Linie sterujące „odczyt’ i „zapis” sterują kierunkiem danych na magistrali danych.Kiedy oba mają
logiczną jedynkę,CPU i pamięć -I/O nie mogą się skomunikować między sobą. Jeśli linia odczytu jest w stanie
niskim (logiczne zero) CPU jest w stanie odczytu danych z pamięci (to znaczy,system przesyła dane z pamięci do
CPU) Jeśli linia zapisu jest w stanie niskim,system przenosi dane z CPU do pamięci.
„Linie aktywujące bajt” są innym zbiorem ważnych linii sterujących.Te linie sterujące pozwalają 16,32 i
64 bitowym procesorom radzić sobie z mniejszymi kawałkami danych.Dodatkowe szczegóły pojawią się w
następnej sekcji.
Rodzina 80x86,w odróżnieniu od innych procesorów,dostarcza dwóch odrębnych przestrzeni adresowych:
jedną dla pamięci i jedną dla I/O.Podczas gdy magistrale adresowe pamięci na różnych procesorach 80x86 różnią się
rozmiarami,magistrala adresowa I/O na wszystkich CPU 80x86 ma szerokość 16 bitów.To pozwala procesorowi
adresować do 65,536 różnych lokacji I/O.Większość urządzeń(takich jak klawiatura,drukarka,dyski,itp.) wymagają
więcej niż jedną lokację
I/O. Pomimo to, 65,536 lokacji
I/O jest wystarczające dla większości aplikacji. Oryginalna
konstrukcja IBM PC pozwala tylko na używanie 1,024 z nich.
Chociaż rodzina 80x86 utrzymuje dwie przestrzenie adresowe,nie ma dwóch magistral adresowych (dla
I/O i pamięci). Zamiast tego,system dzieli magistralę adresową na I/O i pamięć.Dodatkowe linie sterujące decydują
czy adres jest przeznaczony dla pamięci czy I/O..Kiedy takie sygnały są aktywne, urządzenia I/O używają adresów
z najmniej znaczących 16 bitów magistrali adresowej.Kiedy są nieaktywne,urządzenia I/O ignorują sygnały na
magistrali adresowej (przejmuje je podsystem pamięci).
3.1.2 PODSYSTEM PAMIĘCI
[ Pobierz całość w formacie PDF ]
-
Linki
- Home
- Psych.9 - Psych 9 (2010) BRRip.XviD.x264.NAPiSY PL, sporo filmów do ściągnięcia
- Psych.9 - Psych 9 (2010) BRRip.XviD.NAPiSY PL, sporo filmów do ściągnięcia
- RED - Red (2010) BDRip.XviD.Napisy PL 3, sporo filmów do ściągnięcia
- RED - Red (2010) BDRip.XviD.Napisy PL, sporo filmów do ściągnięcia
- RED - Red (2010) BDRip.XviD.Napisy PL 2, sporo filmów do ściągnięcia
- Rambo-First.Blood.Part.II[1985]DvDrip-aXXo.pl, ● Filmy ●, -Rambo- kolekcja
- Radical 2017 PL, WĘDKARSTWO, Dokumenty wędkarskie PDF i KATALOGI
- Resident Evil Degeneration 2008 napisy PL, napisy do filmow
- Rambo.III[1988]DvDrip-aXXo.pl, ● Filmy ●, -Rambo- kolekcja
- R, 7 polecam - Powszechna Encyklopedia Filozofii, Pdf
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- streamer.htw.pl