/[smarc]/smarc/docs/manual.tex
ViewVC logotype

Diff of /smarc/docs/manual.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by misto, Mon Jan 6 01:29:50 2003 UTC revision 1.3 by misto, Tue Jan 14 21:48:41 2003 UTC
# Line 26  Line 26 
26          \and%          \and%
27          {\large Tomasz Poradowski} %          {\large Tomasz Poradowski} %
28                  {\normalsize {\tt \(<\)batonik@batonik.net\(>\)}}}                  {\normalsize {\tt \(<\)batonik@batonik.net\(>\)}}}
29  \title{{\Large Dokumentacja projektu} \\ \vspace{2mm} {\Huge SmArc} }  \title{{\Large Dokumentacja projektu} \\ \vspace{2mm} {\Huge SmArc}}
30    
31  \date{\sf Politechnika Wrocławska, Wrocław, (c) 2002-2003}  
32    \date{  {\small {\tt http://savannah.gnu.org/projects/SmArc}} \\\vspace{1mm}
33            {\sf Politechnika Wrocławska, Wrocław, (c) 2002-2003 }}
34  \maketitle  \maketitle
35    
36  \newcommand{\spasm}{{\it spasm}}  \newcommand{\spasm}{{\it spasm}}
# Line 37  Line 39 
39  \newcommand{\smarcgui}{{\it smarcgui}}  \newcommand{\smarcgui}{{\it smarcgui}}
40  \newcommand{\SmArc}{{\bf SmArc}}  \newcommand{\SmArc}{{\bf SmArc}}
41  \newcommand{\SmArcAs}{{\bf SmArcAs}}  \newcommand{\SmArcAs}{{\bf SmArcAs}}
42    \newcommand{\SPARC}{{\bf SPARCv8}}
43    
44  \section{Wstęp}  \section{Wstęp}
45  \label{sec:wstep}  \label{sec:wstep}
46    
47  Wirtualna maszyna \SmArc\ powstała jako projekt akademicki, mający na  Wirtualna maszyna \SmArc\ powstała jako projekt akademicki, mający na
48  celu bliższe poznanie architektury oraz sposobu działania procesora  celu bliższe poznanie architektury oraz sposobu działania procesora
49  SPARC. \SmArc\cite{komorowski} (od {\it Small SPARC}) zawiera jego  \SPARC. \SmArc\cite{komorowski} (od {\it Small SPARC}) zawiera jego
50  wersję uproszczoną, jednakże wiernie oddaje ona realia i większość  wersję uproszczoną, jednakże wiernie oddaje ona realia i większość
51  aspektów projektowych oraz technologicznych zastosowanych w oryginale  aspektów projektowych oraz technologicznych zastosowanych w oryginale
52  (więcej informacji w specyfikacji SPARCv8\cite{SPARCv8}).  (więcej informacji w specyfikacji \SPARC\cite{SPARCv8}).
53    
54    
55    
56  \section{Elementy \SmArc}  \section{Elementy \SmArc}
# Line 56  aspektów projektowych oraz technologiczn Line 60  aspektów projektowych oraz technologiczn
60  znajduje się w~dalszej części):  znajduje się w~dalszej części):
61    
62  \begin{itemize}  \begin{itemize}
63  \item \vmachine\ - wirtulana maszyna oparta na uproszczonej wersji procesora  \item \vmachine\ - wirtualna maszyna oparta na uproszczonej wersji procesora
64                    SPARC                    \SPARC
65  \item \spasm\ - asembler programów napisanych w języku \SmArcAs\ (uproszczonej  \item \spasm\ - asembler programów napisanych w języku \SmArcAs\ (uproszczonej
66                    wersji asemblera SPARC)                    wersji asemblera \SPARC)
67  \item \despasm\ - deasembler plików wykonywalnych zapisanych w formacie maszyny  \item \despasm\ - deasembler plików wykonywalnych zapisanych w formacie maszyny
68                    wirtualnej \SmArc                    wirtualnej \SmArc
69  \item \smarcgui\ - interfejs graficzny wirtualnej maszyny \SmArc  \item \smarcgui\ - interfejs graficzny wirtualnej maszyny \SmArc
70  \item {\it loader} - moduł służacy do wczytania plików wykonywalnych \SmArc  \item {\it loader} - moduł służący do wczytania plików wykonywalnych \SmArc
71  \item {\it examples} - przykładowe programy źródłowe w języku \SmArcAs  \item {\it examples} - przykładowe programy źródłowe w języku \SmArcAs
72  \end{itemize}  \end{itemize}
73    
# Line 81  znajduje się w~dalszej części): Line 85  znajduje się w~dalszej części):
85  \label{sec:elementy:vmachine}  \label{sec:elementy:vmachine}
86    
87  \vmachine\ jest głównym modułem projektu \SmArc. Jest to uproszczony  \vmachine\ jest głównym modułem projektu \SmArc. Jest to uproszczony
88  model procesora SPARC o klasycznej strukturze potoku 5-stopniowego.  model procesora \SPARC\ o klasycznej strukturze potoku 5-stopniowego.
89  Symuluje wykonywanie programów z~dokładnością do mikrooperacji  Symuluje wykonywanie programów z~dokładnością do mikrooperacji
90  wykonywanych w jednym cyklu zegara.  \vmachine\ umożliwia zaobserwować  wykonywanych w jednym cyklu zegara.  \vmachine\ umożliwia zaobserwować
91  przepływ danych we wewnętrznych rejestrach procesora, w szczególności  przepływ danych we wewnętrznych rejestrach procesora, w szczególności
# Line 103  założenia, jakie zostały przyjęte podcza Line 107  założenia, jakie zostały przyjęte podcza
107  \label{sec:elementy:spasm}  \label{sec:elementy:spasm}
108    
109  Program \spasm\ służy do tłumaczenia plików źródłowych napisanych w  Program \spasm\ służy do tłumaczenia plików źródłowych napisanych w
110  języku \SmArcAs\ (uproszczonej wersji asemblera SPARC) do kodu wykonywalnego  języku \SmArcAs\ (uproszczonej wersji asemblera \SPARC) do kodu wykonywalnego
111  (binarnego) w formacie maszyny wirtualnej \SmArc. \spasm\ jest uruchamiany  (binarnego) w formacie maszyny wirtualnej \SmArc. \spasm\ jest uruchamiany
112  z linii poleceń:  z linii poleceń:
113    
# Line 226  Wykonuje on funkcje zredukowanego system Line 230  Wykonuje on funkcje zredukowanego system
230  \label{sec:elementy:example}  \label{sec:elementy:example}
231    
232          W katalogu {\it examples} zawarte zostały poglądowe programy mające na          W katalogu {\it examples} zawarte zostały poglądowe programy mające na
233  celu pokazanie jednej lub więcej właściwości procesora SPARC. Niektóre z nich  celu pokazanie jednej lub więcej właściwości procesora \SPARC. Niektóre z nich
234  to zwykłe, typowe programy testowe.  to zwykłe, typowe programy testowe.
235    
236  \begin{itemize}  \begin{itemize}
237  \item addloop.asm - pętla wykonywana zadaną ilość razy  \item addloop.asm - pętla wykonywana zadaną ilość razy
238  \item arith.asm - instrukcje arytmetyczne  \item arith.asm - instrukcje arytmetyczne
239  \item forward.asm - demonstracja {\it forwardingu} w procesorze SPARC  \item forward.asm - demonstracja {\it forwardingu} w procesorze \SPARC
240  \item load.asm - odczyt i zapis z/do pamięci danych  \item load.asm - odczyt i zapis z/do pamięci danych
241  \item logic.asm - operacje logiczne na rejestrach  \item logic.asm - operacje logiczne na rejestrach
242  \item loop.asm - instrukcje branch  \item loop.asm - instrukcje branch
243  \item memcpy.asm - kopiowanie danych  \item memcpy.asm - kopiowanie danych
244  \item procedure.asm - instrukcja call wywołanie fragmentu programu (procedury)  \item procedure.asm - instrukcja call wywołanie fragmentu programu (procedury)
245  \item stall.asm - demonstracja wystąpienia {\it stall} w procesorze SPARC  \item stall.asm - demonstracja wystąpienia {\it stall} w procesorze \SPARC
246  \end{itemize}  \end{itemize}
247    
248    
# Line 265  Poszczególne stopnie potoku wykonują pon Line 269  Poszczególne stopnie potoku wykonują pon
269  \item {\bf WB} ({\it Write Back}) - zapis wyniku w rejestrach programowych  \item {\bf WB} ({\it Write Back}) - zapis wyniku w rejestrach programowych
270  \end{itemize}  \end{itemize}
271    
272  Każdy stopień potoku jest wyraźnie wyodrębiony. Fazy komunikują się  Każdy stopień potoku jest wyraźnie wyodrębniony. Fazy komunikują się
273  pomiędzy sobą za pomocą dwutaktowych (master-slave) rejestrów wewnętrzych.  pomiędzy sobą za pomocą dwutaktowych (master-slave) rejestrów wewnętrznych.
274  \vmachine\ pozwala zaobserwować przepływ danych pomiędzy  \vmachine\ pozwala zaobserwować przepływ danych pomiędzy
275  fazami udostępniając wartości poniższych rejestrów.  fazami udostępniając wartości poniższych rejestrów.
276    
# Line 282  fazami udostępniając wartości poniższych Line 286  fazami udostępniając wartości poniższych
286    
287  \subsubsection{Założenia \SmArc\ i vmachine}  \subsubsection{Założenia \SmArc\ i vmachine}
288    
289  Architektura \SmArc\cite{komorowski} w stosunku architektury SPARC została  Architektura \SmArc\cite{komorowski} w stosunku architektury \SPARC\ została
290  w celach dydaktycznych uproszczona. Zrezygnowano z implementacji  w celach dydaktycznych uproszczona. Zrezygnowano z implementacji
291  poniższych:  poniższych:
292    
# Line 293  poniższych: Line 297  poniższych:
297  \item wewnętrzne rejestry procesora {\bf Y, WIM, TBR}, częściowo {\bf PSR}  \item wewnętrzne rejestry procesora {\bf Y, WIM, TBR}, częściowo {\bf PSR}
298  \end{itemize}  \end{itemize}
299    
300  W stosunku do specyfikacji SPARCv8\cite{SPARCv8} do listy instrukcji  W stosunku do specyfikacji \SPARC\cite{SPARCv8} do listy instrukcji
301  architektury \SmArc\ nie wchodzą:  architektury \SmArc\ nie wchodzą:
302    
303  \begin{itemize}  \begin{itemize}
# Line 311  architektury \SmArc\ nie wchodzą: Line 315  architektury \SmArc\ nie wchodzą:
315    
316  \vmachine\ implementuje wszystkie instrukcje, jakie generuje  \vmachine\ implementuje wszystkie instrukcje, jakie generuje
317  assembler \spasm\ (opis w rozdziale \ref{sec:zalozenia:spasm}).  assembler \spasm\ (opis w rozdziale \ref{sec:zalozenia:spasm}).
318  Instrukcje zrealizowane w wirtualnej maszynie \SmArc\ są zgodne z  Instrukcje zrealizowane w wirtualnej maszynie \vmachine\ są zgodne z
319  opisem zawartym w specyfikacji SPARCv8 \cite{SPARCv8}.  opisem zawartym w specyfikacji \SPARC\cite{SPARCv8}.
320    
321    \vspace{1mm}
322    
323    Warto zwrócić uwagę także na pewne różnice (pomijając wymienione
324    wyżej ograniczenia) pomiędzy specyfikacjami \SPARC\cite{SPARCv8}
325    a \SmArc\cite{komorowski}. Podczas realizacji projektu postanowiliśmy
326    w tych przypadkach zastosować się do specyfikacji \SPARC.
327    \begin{itemize}
328    \item w architekturze \SmArc\ odwołania do pamięci o wielkości bajta/półsłowa
329            odnoszą się do najmniej znaczącego bajta/półsłowa danego słowa,
330            natomiast w architekturze \SPARC\ można odwołać się do
331            dowolnego bajta/półsłowa. Moduł \vmachine\ stosuje się
332            do drugiej specyfikacji.
333    \item w architekturze \SmArc\ rozkazy przesunięć bitowych mają składnie:
334            \begin{center}
335                    {\it shiftop}\verb!    r[src1], imm13, r[dst]!
336            \end{center}
337            gdzie:
338            \[ R[dst]\, \leftarrow\, imm13\;\; \mathit{shiftop}\;\; R[src1] \]
339            Natomiast w specyfikacji \SPARC:
340            \begin{center}
341                    {\it shiftop}\verb!    r[src1], r[src2]/imm13, r[dst]!
342            \end{center}
343            gdzie:
344            \[ R[dst]\, \leftarrow\, R[src1]\;\; \mathit{shiftop}\;\; R[src2]/imm13 \]
345            Różnica polega na zamianie znaczenia poszczególnych argumentów
346            źródłowych oraz na zezwoleniu na użycie rejestru w drugim
347            argumencie. Moduł \vmachine\ stosuje drugą konwencję.
348    \end{itemize}
349    
350    \vspace{1mm}
351    
352  \noindent Inne założenia symulatora \vmachine:  \noindent Inne założenia symulatora \vmachine:
353  \begin{itemize}  \begin{itemize}
354  \item 32 okien rejestrów, czyli w sumie 520  \item 32 okien rejestrów, czyli w sumie 520
355  \item separacja pamięć na dane i instrukcje. Obie posiadają osobne  \item separacja pamięć na dane i instrukcje (Harward).
356          przestrznie adresowe. Pamięć instrukcji          Obie posiadają osobne przestrzenie adresowe. Pamięć instrukcji
357          jest tylko do odczytu (poprzez rejestr {\bf PC}), natomiast          jest tylko do odczytu (poprzez rejestr {\bf PC}), natomiast
358          dostęp danych jest poprzez instrukcje typu {\it load} i {\it store}.          dostęp danych jest poprzez instrukcje typu {\it load}
359            i {\it store}.
360  \item odwołania do pamięci są zawsze trafione (nie obserwujemy procesu  \item odwołania do pamięci są zawsze trafione (nie obserwujemy procesu
361          zapełniania pamięci cache i związanym z tym wstrzymaniem potoku)          zapełniania pamięci cache i związanym z tym wstrzymaniem potoku)
362  \item 256Kb pamięci danych  \item 256Kb pamięci danych oraz 256Kb pamięci instrukcji
363  \item 256Kb pamięci instrukcji  \item słowo rozkazowe o wartości 0 zatrzymuje symulator
 \item słowo rozkazowe o kodzie o wartości 0 zatrzymuje symulator  
364          (po zakończeniu działania instrukcji znajdujących się już w potoku)          (po zakończeniu działania instrukcji znajdujących się już w potoku)
365  \end{itemize}  \end{itemize}
366    
# Line 420  składnię rozkazu/grupy rozkazów - opisan Line 454  składnię rozkazu/grupy rozkazów - opisan
454    
455  Dokładniejsze informacje dotyczące składni, formatu słów  Dokładniejsze informacje dotyczące składni, formatu słów
456  rozkazowych i kodowania rozkazów można znaleźć w specyfikacji  rozkazowych i kodowania rozkazów można znaleźć w specyfikacji
457  SPARCv8 \cite{SPARCv8}.  Tam również znajdują się rozkazy procesora  \SPARC\cite{SPARCv8}.  Tam również znajdują się rozkazy procesora
458  SPARC, których implementacja \SmArc\ nie obejmuje (inne rozkazy  \SPARC, których implementacja \SmArc\ nie obejmuje (inne rozkazy
459  arytmetyczne, rozkazy korzystające z koprocesora, itp.)  arytmetyczne, rozkazy korzystające z koprocesora, itp.)
460    
461    
# Line 501  w poniższej tabeli: Line 535  w poniższej tabeli:
535  \item małe i duże litery są rozróżniane za wyjątkiem nazw symboli specjalnych,  \item małe i duże litery są rozróżniane za wyjątkiem nazw symboli specjalnych,
536  \item rozkazy są pisane wyłącznie małymi literami,  \item rozkazy są pisane wyłącznie małymi literami,
537  \item symbole specjalne zaczynają się od znaku procentu ({\tt \%})  \item symbole specjalne zaczynają się od znaku procentu ({\tt \%})
538  \item etykiety i nazwy zaczynaja się od litery; po etykiecie musi być  \item etykiety i nazwy zaczynają się od litery; po etykiecie musi być
539    dwukropek (:).    dwukropek (:).
540  \item liczby mogą być w zapisie dziesiętnym lub szesnastkowym; w zapisie  \item liczby mogą być w zapisie dziesiętnym lub szesnastkowym; w zapisie
541    szesnastkowym liczby muszą być poprzedzone znakiem zera i litery 'x'    szesnastkowym liczby muszą być poprzedzone znakiem zera i litery 'x'
# Line 578  dystrybucji. Line 612  dystrybucji.
612  \item gtk-devel, glade-devel  \item gtk-devel, glade-devel
613  \end{itemize}  \end{itemize}
614    
615  Procedurę budowania \SmArc\ można wykonać na przykład w poniższy sposób:  
616    \noindent Procedurę budowania \SmArc\ można wykonać
617    na przykład w poniższy sposób:
618    
619  \begin{verbatim}  \begin{verbatim}
620  $ tar xzf smarc-XX.tar.gz  $ tar xzf smarc-XX.tar.gz

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26