Systemy komputerowe
Magistrale systemowe: Magistrala PCI
Magistrala jest -
-
do jednego lub kilku miejsc przeznaczenia.
!"#$#
$
magistrali. Natomiast
%
# &
'$(
Sposób wykorzystania
linii magistrali
-
#
danych
-
#
#
Taktowanie - synchroniczne lub asynchroniczne.
Rodzaje operacji
przekazu danych
- zapis, odczyt, odczyt-modyfikacja-zapis,
odczyt kontrolny, przekaz blokowy.
- centralny lub rozproszony.
Magistrala podsystemu procesor-
SCSI
Karta
sieciowa
Most ISA
Most PCI
Karta
audio
P1394
Procesor
Procesor
Kontroler
Karta
graficzna
)*+
(Peripheral Component Interconnect). Jest to lokalna magistrala,
"
#
smisji
" '
operacji.
1. OPIS STANDARDU
Norma PCI Local Bus (ostatnia wersja: Revision 2.2) wydana przez
PCI Special Interest Group,
' ,- # . "
/0 #1
#
" ,, 23 . "
"$
– 66 MHz). W protokóle transmisji danych
)
" ,, 23 )*+ $
,- # #" 4,- 2#5 /0 #
$ "$ %
#" #
6"
Nie przewidziano dodatkowego buforowania. Magistrala nie jest
7
# 8
'#
)*+
emu procesor
–
$
-
$ .+9: ;+9:
2*1 6 #"
most-sterownik magistrali PCI.
2)*+$'#'#
!"'
-
takich jak np. kontroler dyskowy -
#'
-sterownika magistrali.
) "$
<
"#$
$
2
$ $ #"
'
-wy, z których
korzysta jednostka centralna.
7
)*+ $ #
podsystemu procesor
centralny –
$
-
$ *
)*+
-wy -
-
#$
)*+ #
procesorem Alpha jak i Pentium lub PowerPC. Warunkiem jest
zainstalowanie odpowiedniego oprogramowania.
+ )*+ "$
' )
utomatyczna
' 2: +56 = #
$ )
$ '
# "
a
# 6)*+
- by w specjalnie do tego celu wydzielonej przestrzeni
adresowej –
'
zainicjowanie pracy.
SZYCH TERMINÓW
Agent
komputera (ang. agent).
Blokowanie
ykonywania sekwencji
$
. 1
(
ane i potwierdza
"$'
(ang. target).
('
"$
faz transmisji danych (ang. master).
Most
#$
. #1
##$#'
"
'8"
#. 1
Przes
sekwencyjne
podstawowy dla PCI tryb transmisji danych: po jednej
'
'
-
#
podawania ich adresów (ang. burst transfer).
!
!"
"$"8
$
innych -
-
.
cache coherency).
#
ów
operacyjnej)
.
')*+1
("
"$'
#
". #
snooping).
Wiersz
"
liczba bajtów -
-
ymiany
". .11
I PCI
2 )*+ #$ ,- #
/0 # 9 # # '
%"
lne dla obu
konfiguracji i specyficzne dla rozszerzenie 64.bitowego.
$%&'(
In
9"
Out
9">?)>
t/s
9"
-
"
s/t/s
? 9
"$
wysokiej impedancji jedynie poprzez aktywny stan wysoki,
@
$
gent. Nowy
$ "
%
biernym konieczne jest podtrzymanie stanu linii przez opornik
o/d
9
'
galwanicznej.
#
9#A
N
-
)*+ 2 0B
0C.$0D1
s/t/s
Przerwania
Dodatkowe
linie dla
transmisji
64.bitowej
INTD#
INTC#
INTB#
INTA#
Sterowanie
GNT#
REQ#
SERR#
IDSEL
DEVSEL#
IRDY#
TRDY#
FRAME#
PAR64
PAR
AD[31::00]
AD[63::32]
C/BE[3::0]#
C/BE[7::4]#
STOP#
PERR#
CLK
RST#
REQ64#
ACK64#
LOCK#
SBO#
SDONE
JTAG
Adres
i dane
9
systemowe
9
awaryjne
:#
(!
(
Kontrola
"
$%)(!
%'$(
9
–
Adres i dane (wspólne linie –
" '
1 #
.1"
9
9#
Sygnalizacja sytuacji awaryjnych.
9"#
LOCK#
'
9##
RST# in
9 <
"$
IDSEL in
9
PCI podczas operacji odczytu i zapisu rejestrów
konfiguracyjnych.
CLK in
9
cy wszystkie
)*+ 9
doprowadzony do wszystkich stanowisk. Wszystkie
RST#, INTA#, INTB#, INTC#
oraz INTD#
#
#
CLK
%
"$ #$ .
stanie niskim) zmieniona w zakresie od 0 do
,,23.#$"
1 2 )*+ #$
"
REQ# t/s
9
prze
#
GNT# t/s
% #
&
GNT#.
AD[31::00] t/s
)
ch.
) '
#'
C/BE[3::0]# t/s
Linie multipleksowane.
% '
% '
"
#E,
-0] danych.
PAR t/s
F".1
#
AD[31:00] i C/BE[3::0]#,
#
'
#
'
8
#
FRAME# s/t/s
9
$ 6"
8
st
'
FRAME# przechodzi w stan wysoki.
IRDY# s/t/s
9
$ # '
)
IRDY#
wystawione na liniach
AD[31::00]
)
"$
#' G
#
IRDY# i TRDY#
TRDY# s/t/s
9
<
" '
$ # '
)
TRDY#
iach AD[31::00]
!"
TRDY# jest aktywny podczas
$
DEVSEL# s/t/s
9
adresata zainicjowanej operacji.
PAR t/s
F " .
1##
liniami AD[31:00] i C/BE[3::0]#,
#
' # '
2
PAR
'
2
bitem PAR przy odczycie danych.
STOP# s/t/s
9
-
-
zaprzestania wykonywan
#
#
PERR# s/t/s
9
#
"
SERR# o/d
9#
#"'
adresu lub danych podczas cyklu specjalnego lub
#$
katastrofalne skutki. Utrzymywany jest w stanie
niskim na czas jednego impulsu zegarowego.
LOCK# s/t/s
9
,
podczas wykonywania operacji nierozdzielnych, do
# .1'
# 2
pozostaje zablokowany do momentu, kiedy oba
FRAME# i LOCK#
2
LOCK#
$
$ . 1
# '
?
LOCK#.
$%$*(($)+,
INT[A::D]# o/d
=
.#
1
7 #$
e
' $
7
' $
linii INTA#.
SDONE in/out
9
"
operacyjnej
"
$
#
buforowaniem. Aktywny SDONE (w stanie wysokim)
' %
"
SBO#: w stanie wysokim informuje,
"
pa
%
$
"$
SBO# in/out
9
"$ "
"
#'
#
"
)*+ #' $
7
"
SDONE (stan wysoki)
)*+
y z odczytem lub
' (
'
$%,(!(!+,!
AD[63::32] t/s
2 %
faz
' % '
REQ64# i ACK64#
stanie niskim, po liniach tych transmitowane
,-#
C/BE[7::4]# t/s
9 % '
a
' !"
'
REQ64# i
ACK64#
" # EC
-
0H
'
PAR64 t/s
9
"
AD[63::32] i C/BE[7::4]#.
REQ64# s/t/s
9 /0 #
"
FRAME#.
ACK64# s/t/s
9 /0 #
"
DEVSEL#.
!?:I .?*& ?+ ?6 ?29 ?J9?A1
)*+
zaleceniami standardu IEEE 1149.1.
4. OPERACJE NA MAGISTRALI PCI
,%&
% $
$
)
$ $
samym czasie, potrzebny jest mechanizm rozstrzygania o wyniku
#
#
% )*+
#
indywidualnymi liniami
REQ# i GNT#
:
$ )*+ .
1
REQ#
$
#.#1
GNT#.
REQ#
2
GNT#
REQ#
2
GNT#
REQ#
2
GNT#
Centralny
#
= )*+ ' #
$ 2 #$
zasada „kto pierwszy ten lepszy”, priorytet cykliczny lub inny
#
!!!
= 0 # #
::F# ::"
REQ#a ustawiony w stan niski.
) # 4
# ) "
zegarowego arbiter, przez ustawienie s
GNT#a (w stan niski),
: ::$
.
FRAME# i IRDY#
1
GNT#
jest w stanie niskim. Operacja
zegarowego 3, kiedy FRAME#
) : $
-
REQ#a w stanie aktywnym. Podczas 3. impulsu
FRAME# jest w stanie niskim , arbiter
F
0
GNT#
#
GNT#a w
: :
0 :F
wykrywa koniec operacji
FRAME# i IRDY#
6
# :F
K
FRAME# i IRDY#
stanie wysokim. Operacja prowadzona przez agenta B zostanie
C )
/
REQ#
#
FRAME# w stanie
6 F #
przeprowadzenia jednej operacji. W nas
"
# #
:
REQ#
:
$
REQ# w
)
#
9
GNT#
#
!" #
#
$ " 2 #$
#
" 2
. 1 ?
.
GNT#
zu agenta w stanie niskim),
#$
"
REQ# w stan niski.
,%)-
2
wykonania operacji wy
'
+ '
#
do magistrali.
))*+
na w
9 '
. 1
' = )*+
-wy.
Ws
.
1 #
# %
) #
nieustalo
) )*+
(
FRAME#
trwania operacji.
IRDY#
pojedynczej fazy
TRDY#
pojedynczej fazy transmisji danych.
2
FRAME# i
IRDY#
)#
z
FRAME#
.1'
adresu (po liniach AD[31::0]). W tym czasie liniami C/BE[3::0]
= #
CLK
#
'
< #
TRDY# i IRDY#
'
!
IRDY# lub TRDY# jest w stanie wysokim,
#
owadza cykle oczekiwania.
: #$L
RDY# w
.
IRDY# dla cyklu zapisu oraz
TRDY#
1 : #
xRDY# w stan niski lub wysoki,
$
2
IRDY#
$
IRDY# oraz FRAME#
#
'
TRDY#.
2 #
'
FRAME#
IRDY#
)"
FRAME# do
#
4.3 Rozkazy magistrali PCI
) ' .'
adresowej), po liniach C/BE[3::0],
AD[31::00]
J$
# J(
i. danych,
ii. we-wy,
iii.
'
<
tawiono
w tabeli:
C/BE[3::0]
#
Typ operacji
Komentarz
1.
0000
Potwierdzenie przerwania
Bezadresowa, odczyt
2.
0001
Cykl specjalny
Bezadresowa, zapis
3.
0010
Operacja czytaj z we-wy
We-wy
4.
0011
Operacja zapisz we-wy
We-wy
5.
0100
Zarezerwowane
-
6.
0101
Zarezerwowane
-
7.
0110
*
)$
8.
0111
<
)$
9.
1000
Zarezerwowane
-
10.
1001
Zarezerwowane
-
11.
1010
*'
Konfiguracja
12.
1011
<'
Konfiguracja
13.
1100
%
)$
14.
1101
Podwójny cykl adresowy (64 bity)
)$
15.
1110
*
)$
16.
1111
<
)$
Potwierdzenie przerwania
-
)*+
)$
rozkaz
potwierdzenia przerwania
.1
@
AD[31::00]
tej operacji wykorzystywane i ich stan w fazie prz
" . #$ #1 &
DEVSEL#
# % '
transmisji danych linie C/BE[3::0]#
" #
Rozkazy typu
cykl specjalny
. M N #
MN1.
DEVSEL#). W fazie adresowej stan
linii adresowych jes
"$
Rozkazy
czytaj z we-wy i zapisz we-wy
-wy. W fazie adresowej po liniach
AD[31::00]
. #$ 1
" #
przestrzeni
-wy.
Rozkazy
i
.""$##
1
Rozkazy typu
i
wykorzystywane odczytywania i zapisu informacji w przestrzeni
adresowej (wybranego agenta) zarezerwowanej dla potrzeb
konfiguracji.
#
8 '
##
-
$
Rozkazy typu podwójny cykl adresowy
korzystania z adresacji 64.bitowej.
Rozkazy typu
#
" # # "
Rozkazy typu
#
kompletu bajtów odwzorowywanych w jednym lub kilku wierszach
2 #
podczas jednej operacji. Wykonanie tego rozkazu wymaga sprawdzenia
' #
%#$
zytaj lub zapisz
' )#
4.4 Adresowanie
& )*+ # $
!"
DEVSEL#.
9
TRDY#, potw
"$
"$
"
DEVSEL#. Raz ustawiony
DEVSEL#
#$
danych.
)
adresu: pozytywne i
%
)*+ " 2
#
"
? # #$
F
)*+
Najkrótszy dopuszczalny czas reakcji przy dekodowaniu negatywnym
#$
#
CLK
7
, ( #
"
5.
1 2 3 4 5 6 7 8
(#"
FRAME#
CLK
DEVSEL#
!!"#$%#&'
6
'
AD[1::0],
w fazie pr
6
AD[1::0]
DEVSEL#.
9
C/BE[3::0]#
" #
liniami AD[31::0]
'
' 2 $ '
$ " "$
#'
2
$ "$
AD[31::0] i C/BE[3::0]#
!"
# $ '
wykorzystania linii magistralowej przez kolejnych agentów powinien
$ )
4.5 Rozkazy konfiguracyjne
% )*+ # '
)
' & )*+
$ -K/ #
w w przestrzeni rejestrów konfiguracji.
# ' #$
#$
IDSEL, który w
J
' #$ "
'
IDSEL
jest warunek AD[1::0]
O>PP> %
# #
linii AD[7::2].
% ' 2G $
-K/
#
'
=
'.#1
jest po liniach AD[10::8].
Zarezerwowane MF
Nr
rejestru
0
0
%()*+,!+
Most PCI-PCI
Most PCI-PCI
!"
%)*+
rysunku 7, kierowana do odpowiedniego mostu PCI-PCI, informacja
adresowa (dla przestrzeni rejestrów konfiguracji) ma bardziej
$ )
,
#$#
Zarezerwowane Nr
magistrali
7
MF Nr
rejestru
0
1
#%(-*+,!+
Dopiero na poziomie odpowiedniego mostu zaadresowanej magistrali
' # . 1
po liniach AD[15::11]
. 1
odpowiedniej linii IDSEL
'
adresowej okrojonej do postaci typu 0 (rysunek 6).
Sposób st
IDSEL
%
" . B
MQQQQQQQN1
"
wystawianie ad
. B1 # $
#
IDSEL.
?
'
FRAME#.
1 2 3 4 5 6 7
DANE
ADRES
FRAME#
CLK
IDSEL
DEVSEL#
AD
IRDY#
TRDY#
$!+!+,!+
J ' $ #
.4/ #1 .,- #1 #
Podczas operac
#
# .
"
AD[7::2]).
,%+'
)#'
je
bitów odebranych z linii AD[1::0]
% " "
##
'
AD1 AD0
Rodzaj transmisji
0 0
#
0 1
1 X
'
) # #
adresowych AD[31::02].
%.!+!!
Na rysunku 10 przedstawiono przebiegi czasowe 32.bitowej operacji
)
FRAME#
' ) #
2. impulsu zegarowego stan linii AD[31::0] oraz linii C/BE[3::0]#
G
, ?
eraz linie C/BE#
" #
' G $
TRDY#
"$
2
zane
F' "
C/BE#
#$
'
2 ''
TRDY# jest w stanie wysokim, konieczne jest
DEVSEL# przejdzie w stan niski,
$
)'
TRDY# lub IRDY# jest
2
" $
ane podczas impulsu zegarowego 4. Faza
IRDY# i TRDY#
0 / D
podczas impulsów 3, 5 i 8. Pierwsza faza
'
TRDY# jest w stanie wysokim, natomiast
'
IRDY# jest w stanie
wysokim podczas impu
C 2
' .
FRAME#
1
C ' 2
# $ '
mpulsu zegarowego 7, wobec czego
D
= 44 #
32.bitowej operacji zapisu
J
"
FRAME# w stan niski w czasie impulsu zegarowego
2. Operacja zapisu jest podobna do operacji odczytu z tym
#
' .1
G
same dla obu operacji.
% 44 '
# %'
trzeci
%'
6 '
.
FRAME# w stanie
wysokim) w
/ !
podczas impulsu zegarowego 8.
.!+!
,%.*!
##
równoczesnej modyfikacji danych przez kilka procesorów, stosowany
jest mechanizm
%
systemach
##$
#$ '
docelowego dla przeprowadzenia sekwencji operacji nierozdzielnych.
W tym czasie ten fragment
powini
#$
innych agentów
F
"$ #
zadanie (
#$
).
W celu zab
'
)*+
LOCK#.
:
REQ# powinien sprawdz
$
LOCK#
9
LOCK#
momentu, w któr
9
" #
FRAME# i LOCK#
!"
LOCK#
$
REQ# -
$
zwolni.
!"
LOCK#
magistrali,
przej
$
Pozostali agenci nie
$
LOCK#
"
a
magistrali.
W czasie kiedy
LOCK#, pozostali
. 1
efektywnie
$
)*+#$
##
4.8 Wykorz
= )*+ #
na magistrali PCI z
$ .#
1
""" %
SDONE i SBO#. Przy ich
' &
#'
$ # $
9
SDONE jest ustawiany w stan wysoki, kiedy procedura
kontrolna
a
a. Stan niski s
u SBO# oznacza,
#
nieaktualne dane
&
y SBO# i SDONE
oznacza to,
#$
agenta.
4.9 Operacje w przestrzeni adresowej rejestrów we-wy
W przypadku operacji wykonywanych w przestrzeni adresowej
zarezerwowanej dla operacji we-wy, wszystkie linie AD[31::0]
" .1 #
&"$ "
#$
.,-#1
-wy.
=
? #
: )*+
#$
9"$
danych, wyznaczana przez C/BE#
#$ "
zaadresowanego sterownika we-wy.
W przestrzeni rejestrów we-wy linie AD[1::0]
.
1 #
AD1 AD0
C/BE#3 C/BE2#
C/BE1#
C/BE0#
0 0
X
X
X
L
0 1
X
X
L
H
1 0
X
L
H H
1 1
L
H H H
4.10 Przerwania
% )*+
=
INT#
L
przerwania i powoduje po pewnym czasie wykonanie rozkazu
potwierdzenia przerwania (linie C/BE[3::0]="0000") dla odczytania
%'
AD[31::0] nie
'
" . $
$
DEVSEL#). Wektor
AD[31::0]
'
danych, kiedy TRDY#
%##$
# #$
przed czasem.
,%&&/0(
i PCI
< )*+ $
# 2
2 $
$ # #
# ' D
%
'$ " #
'
STOP#
9
STOP# raz
#$
FRAME#
nie przejdzie w stan wysoki.
2
nia operacji, przez
FRAME#
IRDY# jest w
+'#
IRDY# i TRDY#
& #
2 $
#
limitu czasu przewidzianego na wykonanie danej operacji.
4.12 Cykl specjalny
J # 7
#
2 "$
komunikat jest skie
J
#
DEVSEL#
% '
C/BE[3::0]
' #
specjalny, natomiast linie AD[31::0]
' %'
AD[15::0]
?
AD[31::16]
#$
ów.
,%&$1(
% # "
'
AD[31::0] i
C/BE[3::0]
# )*+ :
$
AD,
"
'
# (
PERR# oraz
SERR#
) "
)$
)$
przez dwa impulsy z
9
SERR#
#"
# 9'
#
SERR#
#$
kilku agentów
" #
#
4.14 Rozszerzenie magistrali PCI do 64 bitów
Rozszerzenie magistrali do 64 bitów wymaga 39 dodatkowych
(
REQ64#, ACK64#, AD[63::32], C/BE[7::4]
oraz PAR64
6/0 # F
REQ64#
2 "
/0 #
ACK64#.
?
#$ /0 # )
'
,- # % # "
AD[63::32] lub C/BE[7::4]
PAR64 przechodzi w stan niski.
Na rysunku 12 przedstawiono przebiegi czasowe 64.bitowej operacji
2/0 #
REQ64#
2 "$
ACK64# w sta
9
FRAME# i DEVSEL# przy operacjach
32.bitowych.
: ,- # $ /0 # !" /0 #
"
64.bitowej, wówczas automatyc
$
wykonanie operacji 32.bitowej.
&'