Komputer IAS
Transkrypt
Komputer IAS
Komputer IAS IAS - architektura ✦ Pamięć: 1K słów 40 bitowych ✦ Reprezentacja binarna w kodzie dopełnieniowym (uzupełnienia do dwóch) (ang. two’s complement, U2) ✦ negujemy bity liczby bez znaku i dodajemy binarnie 1 ✦ 2 x 20 bitowe rozkazy ✦ Rejestry (pamiętane w CPU) ✦ ✦ ✦ ✦ ✦ ✦ ✦ Rejestr buforowy pamięci - MBR: Master Buffer Register Rejestr adresowy pamięci - MAR: Memory Address Reg. Rejestr rozkazów - IR: Instruction Register Rejestr buforowy rozkazów - IBR: Instruction Buffer Reg. Licznik programu - PC : Program Counter Akumulator - AC: Acumulator Rejestr mnożenia-dzielenia -MQ: Multiper-Quotier IAS - format danych i rozkazów 0 1 39 Dane Bit znaku 0 7 8 Kod operacji 19 20 Adres Rozkaz lewy Kod operacji 27 28 39 Adres Rozkaz prawy Struktura komputera IAS Jednostka centralna (CPU) Jednostka arytmetyczno-logiczna (ALU) Akumulator MQ Układy arytmetyczno-logiczne MBR Urządzenia wejściawyjścia Rozkazy & Dane . . IBR IR . PC MAR Układy sterujące . . . Programowa jednostka sterująca (ALU) Adresy Pamięć główna M Rejestry IAS ✦ MBR - zawiera słowo, które ma być przechowywane w pamięci, lub też jest wykorzystywany do pobierania słów z pamięci ✦ MAR - określa adres słowa w pamięci, które ma być zapisane lub odczytane z MBR ✦ IR - zawiera 8-bitowy kod wykonywanego rozkazu ✦ IBR - rejestr roboczy do przechowywania prawej połowy słowa rozkazu Rejestry IAS (c.d.) ✦ PC - zawiera adres następnej pary rozkazów, która ma być pobrana z pamięci ✦ AC i MQ - rejestry robocze do czasowego przechowywania argumentów oraz wyników operacji prowadzonych przez ALU ✦ wynik mnożenia liczb 40-bitowych jest 80-bitowy; 40 starszych bitów jest pamiętanych w AC, 40 młodszych bitów jest pamiętanych w MQ ✦ Oznaczenie M(X, A:B) - zawartość komórki pamięci o adresie X od bitu A do bitu B; M(X)=M(X, 0:39) ✦ M(5,0:7) - kod instrukcji w szóstym słowie ✦ Lista 21 rozkazów IAS - rozkazy (1) ✦ Transfer danych - pamięć<->ALU i ALU<->ALU ✦ 00001010 LOAD MQ - przenieś zawartość rejestru MQ do AC ✦ 00001001 LOAD MQ,M(X) - przenieś zawartość pamięci X do MQ ✦ 00100001 STOR M(X) - przenieś zawartość AC pod adres X ✦ 00000001 LOAD M(X) - przenieś M(X) do AC ✦ 00000010 LOAD -M(X) - przenieś -M(X) do AC ✦ 00000011 LOAD |M(X)| - przenieś |M(X)| do AC ✦ 00000100 LOAD -|M(X)| - przenieś -|M(X)| do AC IAS - rozkazy (2) ✦ Rozgałęzienie bezwarunkowe - umożliwia operacje powtarzalne ✦ 00001101 JUMP M(X,0:19) - pobierz następny rozkaz z lewej połowy M(X) ✦ 00001110 JUMP M(X,20:39) - pobierz następny rozkaz z prawej połowy M(X) ✦ Rozgałęzienie warunkowe - umożliwia decyzje ✦ 00001111 JUMP +M(X,0:19) - pobierz następny rozkaz z lewej połowy M(X) o ile AC \geq 0 ✦ 00010000 JUMP+ M(X,20:39) - pobierz następny rozkaz z prawej połowy M(X) o ile AC \geq 0 IAS - rozkazy (3) ✦ Rozkazy arytmetyczne - wykonywane przez ALU ✦ 00000101 ADD ✦ 00000111 ADD ✦ 00000110 SUB ✦ 00001000 SUB ✦ 00001011 MUL ✦ 00001100 DIV mod(AC /M(X)) ✦ 00010100 LSH ✦ 00010101 RSH M(X) |M(X)| M(X) |M(X)| M(X) M(X) -> AC - AC + M(X) -> AC AC + |M(X)| -> AC AC - M(X) -> AC AC - |M(X)| -> AC MQ*M(X) -> AC [AC/M(X)] -> MQ & AC*2 -> AC (o 1b w lewo) [AC/2] -> AC (o 1b w prawo) IAS - rozkazy (4) ✦ Rozkazy modyfikacji adresu - obliczenie adresów w ALU i wstawienie ich do pamięci (uelastycznienie adresowania) ✦ 000010010 STOR M(X,8:19) - wstaw 12 prawych bitów AC do pola adresowego lewej połowy M(X) ✦ 00010011 STOR M(X,28:39) - wstaw 12 prawych bitów AC do pola adresowego prawej połowy M(X) IAS - realizacja instrukcji ✦ Cykl pobierania ✦ jeśli IBR nie zawiera następnej instrukcji: ✦ MAR<- PC; MBR<- M(MAR); ✦ jeśli wymagana jest lewa połowa: ✦ IBR<- MBR(20:39); IR<- MBR(0:7); MAR<- MBR(8:19); ✦ jeśli nie jest wymagana lewa połowa: ✦ IR<- MBR(20:27); MAR<- MBR(28:39); PC<- PC+1; ✦ jeśli IBR zawiera następną instrukcję: ✦ IR<- MBR(0:7); MAR<- MBR(8:19); PC<- PC+1; ✦ Cykl wykonania, przykłady ✦ ✦ ✦ ✦ LOAD M(X): MBR<-M(MAR); AC<-MBR; JUMP M(X, 0:19) : PC<- MAR; JUMP+M(X,0:19): jeśli AC>=0 to JUMP M(X, 0-19); NOOP; ADD M(X): MBR<- M(MAR); AC<- AC + MBR; Start Schemat IAS Tak Cykl pobierania Nie wymagany dostęp do pamięci Czy następny rozkaz jest w IBR? Nie MAR← PC MBR← M(MAR) IR← IBR(0:7) IR ← MBR(20:27) MAR←IBR(8:19) MAR←MBR(28:39) Nie Czy wymagany jest lewy rozkaz? Tak IBR←MBR(20:39) IR← MBR(0:7) MAR← MBR(8:19) PC ← PC+1 Dekoduj rozkaz w IR Cykl wykonania AC← M(X) Idź do M(X,0:19) Jeśli AC≥ 0 idź do M(X,0:19) AC← AC+M(X) Czy AC≥0? MBR←M(MAR) AC ← MBR PC ← MAR MBR←M(MAR) AC← AC+MBR