Asembler/Podstawy: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m Wycofano edycje użytkownika 83.18.41.226 (dyskusja). Autor przywróconej wersji to 47fc19cc.
Linia 30:
# przenieść wynik obliczeń do któregoś z rejestrów
# skopiować wynik z rejestru do pamięci
===Cykl rozkazowy===
saf
Jak wspomnieliśmy procesor musi pobrać dany rozkaz, następnie go zdekodować (czyli jakby go sobie "przetłumaczyć"), a potem wykonać. Całość oczywiście wykonywana jest cyklicznie, z prędkością narzuconą przez zegar procesora. Całość cyklu można podzielić na dwie części: fazę pobrania oraz fazę wykonania. Faza pobrania polega na pobraniu kodu rozkazu z komórki pamięci o adresie przechowywanym w liczniku rozkazów, a następnie na umieszczeniu tego kodu w rejestrze rozkazów IR znajdującym się w układzie sterowania mikroprocesora. Kod rozkazu przesyłany jest do mikroprocesora magistralą danych. Następnie, zawartość rejestru wskaźnika instrukcji jest modyfikowana tak, aby wskazywał on na kolejny kod rozkazu
przeznaczony do pobrania. Po zakończeniu fazy pobrania następuje faza wykonania. W tej fazie kod w rejestrze IR jest tłumaczony w dekoderze rozkazów, po czym generowane są odpowiednie sygnały sterujące zarówno wewnętrzne jak i zewnętrzne. Oto jak w przybliżeniu wykonują się poszczególne fazy:
*Faza pobierania:
# Do magistrali adresowej umieszczany jest adres komórki w pamięci w której znajduje się rozkaz do wykonania.
# Zawartość tej komórki zostaje skopiowana do rejestru IR.
# Na koniec zostaje zwiększona wartość licznika instrukcji tak, aby pokazywał kolejny adres następnej instrukcji.
 
[[Grafika:Procesor_i_pami%C4%99%C4%87.jpg|320px]]
==Pamieć ==
 
 
Obliczony przez procesor adres rozkazu w pamięci jest umieszczony na magistrali adresowej. Ten adres zostaje odebrany przez kontroler pamięci operacyjnej, który lokalizuje daną komórkę oraz kopiuje jej wartość i przesyła na magistralę danych. Tą swoistą "autostradą" pomiędzy procesorem a pamięcią, nasz rozkaz podąża do rejestru rozkazów gdzie czeka dalsze operacje.
*Faza wykonania:
# Dany kod rozkazu zostaje przetłumaczony na postać zrozumiałą dla procesora, a następnie zostają wygenerowane odpowiednie sygnały sterujące. Teraz dany rozkaz jest wykonywany przez komputer.
 
Oczywiście jeśli dany rozkaz nie mieści się w jednej komórce to odpowiednie etapy fazy pobrania są powtarzane tak długo aż uzyska się kod '''całego rozkazu'''. Jak sobie wyjaśniliśmy, fazy są wykonywane jedna po drugiej, lecz wprowadzono technologię zwaną ''prefetching`iem''. Dzięki tej modyfikacji już w trakcie wykonywania jednego rozkazu, pobierany jest następny. Najlepiej całą ideę ilustruje poniższy schemat:
 
[[Grafika:Cykl_z_prefetching.jpg|640px]]
 
 
== Pamięć ==
{{Wikipedia|Pamięć komputerowa}}
Drugim ważnym elementem komputera jest pamięć. Jest to swego rodzaju magazyn danych dla procesora. To tutaj składuje się zarówno sam kod maszynowy programu, jak i dane, które będą przetwarzane. Z punktu widzenia elektronika, pamięć składa się z bardzo dużej ilości kondensatorów, z których każdy odpowiada za 1 bit informacji.
Drugim ważnym elementem komputera jest
Ładunek o wyższym napięciu w kondensatorze oznacza 1, a o niższym oznacza 0. Zazwyczaj z pewną granicą, aby nie nastąpiła nieprawidłowa interpretacja danych. Przykładowo: od 0V do 0.7V - logiczne 0, od 1.5V wzwyż logiczne 0. Jest tak ponieważ zapewnia to dłuższą żywotność sprzętu.
 
Osiem bitów odpowiada jednemu bajtowi informacji. Dopiero bajt jest adresowalną jednostką informacji. Oznacza to, że procesor może odwoływać się tylko do pojedynczego bajtu pamięci, natomiast dostęp do konkretnego bitu możliwy jest dopiero za pomocą odpowiednich instrukcji logicznych procesora. Rozróżniamy różne rodzaje pamięci, takie jak RAM (pamięć przeznaczona do zapisu i odczyt) oraz ROM (wyłącznie odczyt, w niej zawarte są programy dzięki którym można zainicjować pracę komputera, jest to pamięć nieulotna). Ta część, która nas najbardziej w chwili obecnej interesuje to pamięć RAM. Można ją podzielić na dwa rodzaje:
*Pamięć dynamiczna (DRAM) - jest dużo tańsza w produkcji i zarazem wolniejsza od pamięci statycznej, jednak znacznie od niej pojemniejsza. Z niej buduję się pamięć operacyjną dla zestawu komputerowego. Jest wolniejsza gdyż jak sama nazwa wskazuje jest dynamiczna. Oznacza to, że zawartość pamięci musi być co jakiś czas ''odświeżana''. Polega to na cyklicznym zapisie informacji do komórek tej pamięci.
*Pamięć statyczna (SRAM) - ma mniejsze zdolności scalania, zatem układy zbudowane z niej muszą być małe. Jest znacznie droższa i szybsza od pamięci dynamicznej. Z pamięci statycznej buduje się głównie pamięci podręczne ('''cache''') procesora.
 
== Urządzenia wejścia i wyjścia ==