You are on page 1of 78

6.1.1.

Компьютер

Компьютер нь маш олон тооны элементүүдээс тогтсон комплекс байгууламж.


Компьютерээр хийгдэж байгаа бүхий л үйлдлүүдийг ерөнхийд нь дараах байдлаар ангилж болно.
Үүнд: /зураг 6.1/
ƒ Өгөгдлийг боловсруулах
ƒ Өгөгдлийг хадгалах
ƒ Өгөгдлийг шилжүүлэх
ƒ Хяналтын хэсэг буюу дээрх хэсгүүдийн үйл ажиллагааг хянаж холбож өгөх зориулалттай

зураг 6.1.
Эндээс үзвэл компьютер дээр дараах 4 үндсэн үйлдэл хийгдэж байна.
ƒ Аль нэг төхөөрөмжөөс ирсэн өгөгдлийг өөр төхөөрөмж рүү шилжүүлэх /зураг 6.2/
ƒ Аль нэг төхөөрөмжөөс ирсэн өгөгдлийг хадгалах, эсвэл хадгалсан өгөгдлийг аль нэг төхөөрөмж
рүү илгээх /зураг 6.3/
ƒ Санах ойд хадгалсан өгөгдлийг боловсруулаад буцааж хадгалах /зураг 6.4/
ƒ Гаднаас ирсэн өгөгдлийг боловсруулаад хадгалах, эсвэл хадгалсан өгөгдлийг боловсруулаад
өөр төхөрөөмж рүү илгээх /зураг 6.5/

зураг 6.2. зураг 6.3.

219
зураг 6.4. зураг 6.5.

6.1.2. Компьютерийн товч түүхээс

Компьютерийн 1-р үе буюу электрон лампны үе: (1945-58)

ENIAC

Pennsylvania-ийн их сургуульд 1943 онд 10-тын тооллын системд


архиметик үйлдэл хийх боломжтой, электрон лампнууд ашигласан
байгууламжийг хийж 1946 онд дуусгажээ. Энэ нь 18000 электрон ламп,
70000 резистор, 10000 конденсатор, 6000 switch, 1500 релей
ашигласан, асар том буюу 30х60 feet хэмжээтэй, 30 тонн жинтэй,
140kW тэжээл шаарддаг аварга байгууламж байв. Энэ байгууламжийг
switch-үүдийн тусламжтайгаар программчлах боломжтой бөгөөд үр
дүнг хадгалах 20 accumulator-тай (регистертэй), 1 секундэд 5000
үйлдэл хийх чадвартай байв. (зураг 6.6) Энэ байгууламжийг 1955 он
хүртэл ашиглаж байв.
зураг 6.6.
IAS компьютер буюу Von Neumann-ий компьютер
ENIAC бүтээгдэхүүнд программыг оруулах, өөрчлөхөд нэлээд түвэгтэй байсан. Программ нь
тусгай санах ойд хадгалагдах бөгөөд эндээс программуудыг дуудан ажиллуулдаг байв. ENIAC
төслийн программыг хадгалах хэсэгт зөвлөгчөөр ажиллаж байсан математикч Von Neumann
1946 онд өөрийн нөхдийн хамт IAS компьютерийг хийх загварыг гаргажээ. (6.6. IAS компьютер
гэдгээс дэлгэрэнгүйг унш). Гэхдээ энэ компьютер нь бүрэн хийгдээгүй бөгөөд 1952 он гэхэд
түүний туршилтын загварыг л (EDVAC) хийсэн юм. Иймээс Von Neumann-ий IAS компьютер нь
орчин үеийн компьютер ямар зохион байгуулалттай, хэрхэн программыг хадгалах, түүнийг
гүйцэтгэх зэргийг тодорхойлж өгсөн загвар болон үлджээ. Үүнийг орчин үеийн компьютерийн
анхны эцэг ч гэж нэрлэдэг. Энэ компьютер нь өгөгдөл болон зааврыг хадгалахад зориулагдсан
тусгай санах ойтой, санах ойн тус тусдаа хаягтай үүрнүүдээс тогтдог, архимтетик логик нэгж
нь 2-тын тооллын системд үйлдэл гүйцэтгэдэг байв.
UNIVAC
1950-аад оны сүүлээр Sperry ба IBM гэсэн компьютер үйлдвэрлэдэг анхны 2 компани үүсэж бий
болов.
1947 онд Eckert, Mauchly нар анхны Eckert-Mauchly Computer Corporation-ийг үндэслэн
байгуулжээ. Энэ корпорациас гаргасан анхны бүтээгдэхүүн нь UNIVAC I (Universial Automatic
Computer) компьютер байлаа. Удалгүй энэ корпорациас UNIVAC төслийг аван Sperry-Rand
Corporation салан гарч UNIVAC серийн компьютеруудыг цаашид үргэлжлүүлэн бүтээжээ.
Удалгүй UNIVAC I-ийг сайжруулсан хурдтай, санах ойн хэмжээ ихтэй UNIVAC II компьютерийг
бүтээснээр анхны бизнэсийн зорилгоор бүтээгдсэн компьютерууд худалдаанд гарсан юм. Мөн
Sperry-гийнхэн UNIVAC-ийн 1100 цувралыг гаргасан юм. Энэ цувралын анхных нь UNIVAC 1103
загвар бөгөөд олон жил эрдэм шинжилгээний зорилгоор ашиглагдаж байжээ.

220
IBM 700
Энэ үед буюу 1953 онд IBM-ийнхэн анхны компьютер болох IBM 701 компьютерээ гаргажээ.
Үүнийг эрдэм шинжилгээ, судалгааны зорилгоор ашиглаж байв. 1955 онд дараагийн IBM 702
компьютерийг худалдаанд зориулан гаргажээ.
Floating Point архиметик
IBM-ийн 704 компьютер нь зөвхөн бүхэл тооны хувьд архиметикийн үйлдлийг гүйцэтгэхээс
гадна Floating Point үйлдлийг гүйцэтгэдэг (Gene Amdahl) байв.

Компьютерийн 2-р үе буюу транзисторын үе: (1958-64)

1947 онд Bell Labs-д анхны транзисторыг хийсэн нь электроникийн түүхэнд электрон лампыг
транзистороор сольсон шинэ эргэлт гаргажээ. Энэ нь мөн адил компьютерийн нэгэн шинэ үе
эхэлснийг зарлажээ. Гэхдээ энэ үед зохиогдож байсан компьютерууд жишээ IBM 700 серийн
компьютерууд шинэ технологийг авч ашиглаагүй юм.
1957 онд DEC корпораци байгуулагдаж тэр жилдээ анхны миникомпьютер болох PDP-1
компьютерээ гаргажээ.
IBM-ийнхэн 1960 оноос эхлэн IBM 7000 серийн компьютерээ хийж эхэлсэн. Энд 1960 онд 7090,
1962 онд 7094 I, 1964 онд 7094 II компьютерээ тус тус гаргасан бөгөөд эдгээр нь транзистор
дээр үндэслэгдсэн байв.
Виртуал ой ба pipeline
1962 онд Tom Kilburn-ий зохиосон Atlas компьютер нь анх виртуал санах ой, зааврыг биелүүлэх
дамжлага pipeline-ийг ашигласан.
Мультпроцессор
1964 онд гарсан UNIVAC-ийн 1108II загвар нь 3 микропроцессорыг ашигладаг.

Компьютерийн 3-р үе буюу интегралчлагч хэлхээний үе: (1964-74)

2-р үеийн компьютерууд нь ойролцоогоор 10000 транзистор ашиглаж байсан бөгөөд энэ тоо нь
цаашид ч өсөхөөр байсан нь компьютер үйлдвэрлэгчдийн хувьд шийдвэрлэвэл зохих асуудлын
нэг болжээ. Энэ үед 1958 онд анхны интегралчлагч хэлхээг зохиосноор микроэлектроникийн үе
эхлэв. Интегралчлагч хэлхээ нь нэг chip-д асар олон транзисторыг багтаах боломжийг
олгосноор компьютерийн овор хэмжээг багасгах боломжтой болжээ. Жишээ нь SSI (small scale
intergation) нь 10 хүртэл транзистор, MSI (medium scale integration) нь 10-аас 100 хүртлэх
транзистор, LSI (large scale integration) 100-гаас 1000 хүртлэх транзисторыг нэг chip дээр
агуулж байв.
Энэ шинэ технологийг ашигласан анхны компьютерууд нь IBM System 360/370, DEC PDP-8
компьютерууд юм. Энэ үеэс эхлэн бүх компьютерууд нэгэн ижил бүтэцтэй болсон. Өөрөөр
хэлбэл компьютерийг үйлдвэрлэдэг олон компаниуд байдаг ч тэдгээрийн үйлдвэрлэсэн
компьютерууд нь ижил архитектуртай болсон.
1964 онд IBM-ийнхэн 7000 хувилбараа гаргасан тэр жил өөр нэгэн урсгалыг гаргажээ. Энэ нь
IBM System/360 юм. Ингээд ердөө хэдхэн жилийн дотор үүний нэлээд хэдэн хувилбар болох
Model 30, 40, 50, 65, 75 гэсэн хувилбаруудыг гаргасан юм. IBM-ийнхэн System/360-ийг хийсэн
тэр жил DEC-ийнхэн PDP-8 гэсэн анхны миникомпьютерийг гаргажээ. (зураг 6.7)

зураг 6.7.
Хагас дамжуулагч санах ой
Энэ үеийн компьютеруудын хувьд гарсан нэг дэвшил нь хагас дамжуулагч санах ойг ашиглах
болсон явдал. 1970 оноос хойш хагас дамжуулагч санах ойн хувьд 8 үе өнгөрчээ. Эдгээр
үеүдэд нэг chip-д 1K, 4K, 16K, 64K, 256K, 1M, 4M, 16M битүүдийг багтааж байв.
Кэш ой
IBM System/360-ийн 85-р загвар нь үндсэн санах ой болон микропроцессорын хооронд
өгөгдлийг дамжуулалтыг хурдасгах зорилгоор кэш ойг ашигласан.
Микропроцессор
3-р үеийн компьютеруудын хувьд гарсан өөр нэг дэвшил нь микропроцессорыг хийсэн явдал
юм.

221
1971 онд Intel анхны микропроцессор болох 4004-ийг гаргасан бөгөөд энэ нь CPU түүний бүх
бүрэлдэхүүнүүдийг нэг chip-д багтаасан тул анхны микропроцессорын эцэг болсон юм. Энэ нь 4
битийн 2 тоог хооронд нэмэх үйлдлийг гүйцэтгэж байв.
1972 онд 8 битийн 8008 микропроцессороо гаргасан бөгөөд энэ нь 2 ширхэг 4004-ийг ашиглаж
байв. Эдгээр микропроцессоруудыг судалгаа шинжилгээний зорилгоор л ашиглаж байсан бол
1974 онд микрокомпьютерт зориулан анхны 8 битийн 8080 микропроцессорыг гаргажээ. Энэ
үеэс эхлэн Intel-ийнхэн 80x86 серийн процессоруудаа үйлдвэрлэж эхэлжээ. Жишээ нь 1978 онд
16 битийн 8086, 1985 онд 32 битийн 80386, 2003 онд 64 битийн Itanium процессороо тус тус
бүтээжээ.
PowerPC
1975 онд IBM-ийнхэн анхны миникомпьютер болох RISC технологийг ашигласан IBM 801
загварыг хийжээ. Энэ нь RISC I процессорыг ашиглаж байв. Гэсэн ч 801 загвар нь бүрэн төгс
хийгдээгүй зөвхөн туршилтын загвар төдий байсан юм. Ингээд худалдаанд зориулан 1986 онд
анхны RISC workstation болох RT PC-ийг гаргажээ. Гэвч энэ нь амжилттай болсонгүй. 1990 онд
өмнөх загваруудыг ашиглан IBM RISC system/6000-ийг бүтээснээр цаашид өндөр хурдтай
workstation-уудыг үйлдвэрлэх эхлэлийг тавьжээ. Удалгүй IBM Motorolа нар хамтран Motorola-
гийн гаргасан 68000 серийн микропроцессоруудыг үйлдвэрлэж эхэлсэн бөгөөд Apple-ийнхан
Motorola chip-ийг ашигласан Macintosh компьютерийг үйлдвэрлэх болжээ. Эдгээр компьютерууд
нь PowerPC архитектуртай анхны компьютерууд юм. Тун удалгүй PowerPC архитектуртай 4
загварыг гаргасан нь 601 (32 битийн анхны загвар), 603 (энгийн хэрэглэгч нарт зориулсан үнэ
хямдтай загвар), 604 (серверүүдэд зориулан өндөр хүчин чадалтай загвар), 620 (64 битийн
анхны загвар)

Компьютерийн 4-р үе буюу VLSI-ийн үе: (1971-ээс одоог хүртэл)

Нэг chip-д багтах транзисторын хэмжээг 10000-100000 хүртэл ихэсгэж чадсан энэ үеийн
компьютеруудыг 4-р үеийн компьютерууд гэдэг. Энэ үеийн анхны компьютерууд нь IBM 3090,
Cray XMP, IBM PC нар юм. Энэ үеийн компьютеруудын гол дэвшил нь компьютерийн сүлжээ,
оптик диск, обьект хандалттай программчлал юм.

Компьютеруудын 5-р үе буюу ULSI-ийн үе:

Нэг chip-д багтах транзисторын тоо 100000-1000000 болтол ихэссэн. Хамгийн гол дэвшил нь
параллель систем, параллель программчлал юм. Энэ үеийн компьютерийн гол төлөөлөгч нар
нь Sun Spare, Intel Paragon нар юм. Энэ үеийн компьютеруудын хурдны гол үзүүлэлт нь нэг
секундэд гүйцэтгэх floating point архиметикийн үйлдэл MFLOPS (millions of floating point
operations per second) юм.

6.2.1. Компьютерийн бүтэц

Компьютерийг дараах 4 үндсэн хэсгээс тогтдог гэж үзэж болно. /зураг 6.8/
ƒ Микропроцессор буюу Central Processing Unit (CPU) – өгөгдлийг боловсруулах хэсэг
ƒ Санах ой буюу Main Memory - өгөгдлийг хадгалах хэсэг
ƒ Оролт/гаралтын хэсэг буюу Input/Output – микропроцессор болон бусад төхөөрөмж (монитор,
гар, хэвлэх төхөөрөмж г.м)-ийн хооронд өгөгдлийг дамжуулах хэсэг
ƒ Системийн холболт буюу System Interconnection – дээрх гурван хэсгийг хооронд холбож өгөх
зориулалттай хэсэг

222
зураг 6.8.

6.2.2. Компьютерийн заавар

Компьютерээр гүйцэтгэх үндсэн үйлдэл нь программыг биелүүлэх явдал юм. Программууд нь санах
ой дахь заавруудын (instruction) тусламжтайгаар гүйцэтгэгдэнэ.
Өөрөөр хэлбэл компьютер дээрх хийгдэх бүхий л үйлдлүүд нь тусгайлан тодорхойлогдсон
заавруудын дагуу биелэгддэг гэж үзэж болно. Эдгээр зааврууд нь санах ойд хадгалагдаж байдаг.
Хамгийн энгийн байдлаар программыг авч үзвэл эхлээд хэрэгтэй зааврыг санах ойгоос олж авах,
дараа нь тухайн зааврыг гүйцэтгэх буюу биелүүлэх, дараа нь дараагийн үйлдэл гүйцэтгэхэд
шаардлагатай зааврыг санах ойгоос олж авах. Тэгвэл программыг дэс дараалсан заавруудыг
биелүүлэх явц гэж ойлгож болно. Нэг зааврыг биелүүлэх явцыг зааврын цикл (instruction cycle) гэж
нэрлэнэ. Зааврын нэг цикл нь зааврыг санах ойгоос олж авах fetch (барьж авах) cycle, зааврыг
гүйцэтгэх буюу биелүүлэх execute (гүйцэтгэх) cycle гэсэн 2 дэд хэсгээс тогтно. /зураг 6.9/

зураг 6.9.
Зааврын цикл нь үндсэндээ дараах шатаар явагдана. /зураг 6.10/
ƒ Зааврын хаягийг тогтоох – зааврын санах ойд байрлах хаягийг тогтооно.
ƒ Зааврыг олж авах – санах ойгоос зааврыг олж авна.
ƒ Зааврын үйлдлийг тогтоох – зааврын opcode-ийн тусламжтайгаар тухайн заавраар гүйцэтгэх
үйлдлийг тогтооно.
ƒ Өгөгдлийн хаягийг тогтоох – тухайн зааврын дагуу боловсруулах өгөгдлийн санах ой дахь
хаягийг тогтооно.
ƒ Өгөгдлийг олж авах – санах ойгоос өгөгдлийг олж авна.
ƒ Өгөгдлийг боловсруулах – тухайн зааврын дагуу өгөгдлийг боловсруулна.
ƒ Үр дүнг хадгалах хаягийг тогтоох – тухайн зааврын дагуу боловсруулсан үр дүнг хадгалах
санах ойн хаягийг тогтооно.
ƒ Үр дүнг хадгалах - өмнөх үйлдлээр тогтоосон хаягийн дагуу үр дүнг хадгална.

223
зураг 6.10.

6.2.3. Регистер

Процессор нь үйлдлийг гүйцэтгэхдээ дараах регистерүүдийг санах ойн журмаар ашиглана:


ƒ Memory Address Register (MAR) – санах ойгоос MBR рүү унших болон бичих үгийн санах ойд
дахь хаягийг агуулна.
ƒ Memory Buffer Register (MBR) – санах ойгоос унших болон бичих үгийг агуулна.
ƒ Program Counter (PC) – дараагийн биелүүлэх зааврын хаягийг тогтооно.
ƒ Instruction Register (IR) – заавраар гүйцэтгэх үйлдлийг тогтооно.
ƒ Accumuliator (AC) – ALU үйлдлийг гүйцэтгэсний дараа үр дүнг хадгалахад хэрэглэнэ.
Заавар ба өгөгдөл нь адилхан 16 битийн урттай байна гэж үзье. Тэгвэл санах ойн нь 216 үүртэй
байх ба санах ойн нэг үүр нь 16 битийн урттай байна. Үүнийг үг (word) гэж нэрлэнэ. Өөрөөр
хэлбэл санах ойн нэг үүрэнд байрлах зүйлийг үг гэнэ. Санах ойн нэг үгэнд заавар ч байж болно,
өгөгдөл ч байж болно. Заавар үг нь тухайн заавраар гүйцэтгэх ёстой үйлдлийг тодорхойлсон op
code (үйлдлийн код) ба тухайн зааврын санах ойд байрлах хаяг гэсэн 2 мэдээллийг агуулна.
Жишээлбэл заавар 16 битийн урттай бөгөөд түүний эхний 4 битийг op code, сүүлийн 12 битийг
хаяг эзэлдэг гэвэл заавар нь 24=16 ялгаатай op code-той, 212=4096 (4K) хаягтай байна.
РС нь дараагийн үйлдэл гүйцэтгэх ёстой зааврын санах ой дахь хаягийг тогтооно. Иймээс РС нь
хэрэгтэй зааврыг олж авсны дараагаар дараагийн шаардлагатай зааврын хаягаар үргэлж
шинэчлэгдэж байдаг.
IR нь тухайн олж авсан зааврын дагуу ямар үйлдэл хийх ёстойг тогтоож өгнө. Энд зааврын
гүйцэтгэх үйлдлийг тодорхойлсон оpсode агуулагддаг.
MAR шууд address bus-тай, MBR шууд data bus-тай холбогдсон байна.
АС нь ALU-гаар боловсруулагдсан үр дүнг хадгална.
Жишээ 6.1.
Заавар нь санах ойн 300 гэсэн хаягтай үүрт хадгалагдаж байг. Тэгвэл энэ үүрт байгаа зааврыг IR-д
татан аваачих бөгөөд энд тухайн зааврыг ямар үйлдэл гүйцэтгэхийг тогтоож өгнө. Харин РС нь
дараагийн зааврын хаягаар шинэчлэгдэнэ. /зураг 6.11/

зураг 6.11.
Үүнээс гадна дараах регисторүүд процессор дотор агуулагдаж байдаг.
I/O Address Register (I/O AR) – гадаад төхөөрөмж рүү хандах хаягийг агуулна.
I/O Buffer Register (I/O BR) – CPU болон I/O module 2-ын хооронд өгөгдөл дамжуулахад ашиглана.
АС – Accumulator нь ихэвчлэн ALU уруу оруулах өгөгдлийг түр хадгалахад ашиглана.
Жишээ 6.2.
2 тоог хэрхэн нэмэхийг авч үзье. Энэ үйлдлийг хийхэд шаардлагатай эхний зааврын хаягийг PC
олж тогтоох ба энэ заавар нь санах ойн 300 гэсэн үүрэнд байг. РС зааврын хаягийг тогтоосноор
энэ зааврыг Instruction Register (IR)–д дуудаж ачаална. IR-д ирсэн зааврын эхний 4 битийн буюу
opcode-ийн тусламжтайгаар энэ заавраар хийх үйлдлийг тогтооно. Дараагийн 12 битийн
тусламжтайгаар энэ үйлдлийг гүйцэтгэхэд ашиглагдах өгөгдлийн санах ой дахь хаягийг тогтооно.
Энэ жишээнд санах ойн 300-р үүрэнд байрлах зааврын opcode нь 1, санах ойн хаяг нь 940 байна.

224
Энэ заавар нь санах ойн 940-р үүрэнд байрлах өгөгдлийг АС-д ачаалах гэсэн үйлдэл байна. /зураг
6.12/

зураг 6.12.
Үүний дараа РС шинэчлэгдэнэ. Өөрөөр РС нь дараагийн зааврын хаягийг тогтоох ба энэ заавар нь
санах ойн 301-р үүрэнд байрлана. Энэ заавар нь санах ойн 941-р үүрэнд байрлах өгөгдлийг АС-д
байгаа утган дээр нэмэх үйлдэл байна. /зураг 6.13/

зураг 6.13.
Дараагийн зааврыг РС тогтоох ба энэ заавар нь санах ойн 302-р үүрэнд байрлана. Энэ заавар нь
АС-д байгаа өгөгдлийг санах ойн 941-р үүрэнд бичих үйлдэл байна. /зураг 6.14/

зураг 6.14.
Дээрх жишээнд 3 заавар хэрэглэгдлээ. Энэ 3 зааврын op code нь дараах утгатай байлаа.
110=000116 – санах ойгоос АС уруу ачаалах
210=001016 – АС-гээс санах ой уруу бичих
510=010116 – санах ойд байгаа утгыг АС-д байгаа утганд нэмэх
Мөн дээрх жишээнд ойлгоход хялбар байх үүднээс бусад шаардлагатай регистерүүд болох MAR,
MBR-ийг тооцсонгүй.

6.2.4. IAS компьютер

1946 онд математикч von Neumann болон түүний нөхөд ENIAC төсөл дээр ажиллаж байхдаа үйлдэл
гүйцэтгэх болон хадгалах чадвартай нэгэн шинэ компьютер зохиосон бөгөөд түүнийгээ IAS
компьютер гэж нэрлэжээ.
IAS компьютер нь дараах хэсгүүдээс тогтно: /зураг 6.15/
ƒ Үндсэн санах ой буюу Main Memory - өгөгдөл (data) болон заавар (instruction)-ыг хадгална.
ƒ Арифметик логик хэсэг буюу Arithmetic Logic Unit (ALU) - өгөгдлийг боловсруулна.
ƒ Хяналтын хэсэг буюу Control Unit – санах ойгоос зааврыг олж авах, түүнийг түүнийг биелүүлэх
зэрэг бүхий л үйлдлийг хянана.
ƒ Оролт/гаралтын хэсэг буюу Input/Output Equipment – компьютерийг бусад төхөөрөмжүүдтэй
холбох зориулалттай гэсэн 4 хэсгээс тогтно.

225
зураг 6.15.
IAS-ийн санах ой нь өгөгдөл санаж хадгалахад зориулагдсан 1000 үүртэй бөгөөд нэг үүрэнд 40
битийн мэдээлэл байрлана. Үүнийг нь үг (word) гэнэ. Иймнээс IAS-ийн хувьд 1 үг нь 40 бит урттай
байх ба энд өгөгдөл (data) ба заавар (instruction)-ын аль нэг нь байрлана.
Жишээ нь өгөгдөл нь тоо (number word) байвал эхний бит нь sign bit (тоог нэмэх хасах болохыг
тогтоох), үлдсэн хэсэг нь тоог, харин заавар (instruction word) бол тус бүр нь 20 битийн урттай
зүүн ба баруун гэсэн 2 заавраас тогтоно. Өөрөөр хэлбэл IAS-ийн заавар нь 20 битийн урттай байх
бөгөөд санах ойн нэг үүрэнд 2 заавар байрлана. Зааврын эхний 8 битийг тухайн заавраар
гүйцэтгэх үйлдлийг тодорхойлсон opcode, үлдсэн 12 битийг тухайн зааврын дагуу үйлдлийг
гүйцэтгэхэд ашиглагдах санах ойн хаягийг агуулна. (зураг 6.16)

зураг 6.16.
IAS компьютерт дараах санах ой буюу регистерүүдийг ашиглана. (зураг 6.17)
ƒ Memory Buffer Register (MBR) – санах ойгоос унших болон бичих үгийг хадгална.
ƒ Memory Address Register (MAR) – MBR рүү унших болон бичих үгийн санах ой дахь хаягийг
хадгална.
ƒ Instruction Register (IR) – тухайн зааврын дагуу гүйцэтгэх үйлдлийг тодорхойлсон opcode-ийг
агуулна.
ƒ Instruction Buffer Register (IBR) – санах ойгоос татан авсан үгэнд багтах заавруудын
ашиглаагүй үлдсэн зааврыг нь хадгална.
ƒ Program Counter (PC) – дараагийн зааврын санах ой дахь хаягийг тогтооно.
ƒ Accumulator (AC) and Multiplier-Quotient (MQ) – ALU-гийн гүйцэтгэсэн үйлдлийн үр дүнг
хадгална. Үндсэн 40 битийг АС-д, үлдсэн хэсгийг нь MQ-д хадгална.

226
зураг 6.17.
Ямар нэгэн үйлдлийг тодорхойлсон зааврыг биелүүлэх үйл явцыг зааврын цикл (instruction cycle)
гэх бөгөөд дараах 2 хэсгээс тогтно. Үүнд:
ƒ Зааврыг олж авах (fetch instruction) - Зааврыг IBR-д хадгалагдаж байгаа заавар эсвэл санах
ойгоос MBR-ийн рүү ачаалагдсан үгнээс олж авна. Ингээд IR уруу зааврын opcode-ийг, MAR
уруу тухайн заавоын санах ой дахь хаягийг нь илгээнэ. Хэрэв зааврыг санах ойгоос MBR уруу
ачаалагдсан үгнээс олсон бол үлдэх зааврыг IBR уруу хуулна.
ƒ Зааврыг биелүүлэх (executed instruction) - IR дэх зааврын opcode-ийн дагуу ALU үйлдлийг
гүйцэтгээд үр дүнг АС болон MQ-д хадгална. Дараагийн үйлдлийг гүйцэтгэх зааврыг PC
тогтоож энэ зааврын хаягийг MAR рүү илгээнэ.
Жишээ нь IAS-ийн зааврыг барьж авах цикл нь дараах шатаар явагдана. /зураг 6.18/
ƒ Дараагийн заавар IBR-д байгаа эсэийг шалгана.
ƒ Хэрэв дараагийн заавар IBR-д байвал заавал санах ой уруу хандах шаардлагагүй болно. IBR-д
байгаа зааврын opcode-ийг IR-д, хаягийн хэсгийг MAR-д хуулна. Энэ заавар нь зүүн заавар
байвал зааврын op code нь 0-оос 7-р бит, хаяг нь 8-аас 19-р бит байна. Ингээд PC
шинэчлэгдсэнээр зааврыг барих цикл дуусна.
ƒ Харин дараагийн заавар IBR-д байхгүй бол PC-гээс зааврын хаягийг MAC уруу хуулна.
ƒ Дараа нь санах ойгоос MAC-аас авсан хаягтай санах ойн үүрэнд байрлах үгийг MBR уруу
хуулна. Энд M(MAC) гэдэг нь санах ойн MAC гэсэн хаяганд байгаа үг гэж ойлгоно.
ƒ MBR-д хуулсан үг нь 2 заавраас тогтсон байх тул аль заавар нь хэрэгтэй болохыг тогтооно.
Үүний тулд ашиглах ёстой заавар маань зүүн заавар нь мөн эсэхийг шалгана.
ƒ Хэрэв зүүн заавар мөн бол IBR-д баруун зааврыг хуулна. Энэ заавар нь 20-оос 39-р битэд
багтсан байна. Мөн зүүн зааврын opcode-ийг IR-д, хаягийн хэсгийг MAR-д хуулна. Зүүн
зааврын op codeнь 0-оос 8-р бит, хаягийн хэсэг нь 9-өөс 19-р битэд байрласан байна.
Ингэснээр зааврыг барих цикл дуусаж PC шинэчлэгдэнэ.
ƒ Харин зүүн заавар биш бол баруун зааврын opcode-ийг IR-д, хаягийн хэсгийг MAR-д хуулна.
Баруун зааврын opcode нь 20-оос 27-р бит, хаягийн хэсэг нь 28-өөс 39-р битэд байрласан
байна. Ингээд PC шинэчлэгдсэнээр зааврыг барих цикл дуусна.

227
зураг 6.18.
IAS-д нийтдээ өгөгдлийг дамжуулах, word-д ирсэн 2 зааврыг салгах, арифметикийн (нэмэх, хасах,
үржүүлэх, хуваах), хаягийг өөрчлөх зэрэг үйлдэл гүйцэтгэхийг тодорхойлсон 21 зааврыг ашиглана.
Зааврын төрөл Op code Ассемблер Тайлбар
Дамжуулах 00001010 LOAD MQ MQ-д байгаа өгөгдлийг АС-д хуулна
00001001 LOAD MQ, M(X) Санах ойн Х хаяганд байгаа үгийг MQ-д хуулна
00100001 STOR M(X) AC–д байгаа зүйлийг санах ойн Х хаяганд хадгална
00000001 LOAD M(X) M(X)-ийг АС уруу хуулна
00000010 LOAD –M(X) -M(X)-ийг АС уруу хуулна
00000011 LOAD |M(X)| M(X)-ийн абсолют утгыг АС уруу хуулна
00000100 LOAD -|M(X)| M(X)-ийн абсолют утгын сөргийг АС уруу хуулна
Branch 00001101 JUMP M(X,0:19) M(X)-ийн зүүн хэсгээс дараагийн зааврыг олж авна
00000100 JUMP M(X,20:39) M(X)-ийн баруун хэсгээс дараагийн зааврыг олж авна
Хэрэв AC-ийн утга негатив биш бол дараагийн зааврыг M(X)-ийн зүүн
00001111 JUMP+ M(X,0:19)
хэсгээс олж авна
Хэрэв АС-ийн утга негатив биш бол дараагийн зааврыг M(X)-ийн баруун
00010000 JUMP+ M(X,20:39)
хэсгээс олж авна
Архиметик 00000101 ADD M(X) ACÅAC+M(X) буюу АС дээр M(X)-г нэмээд гарсан үр дүнг АС-д хадгална
00000111 ADD |M(X)| ACÅAC+|M(X)|
00000110 SUB M(X) ACÅAC-M(X)
00001000 SUB |M(X)| ACÅAC-|M(X)|
00001011 MUL M(X) ACÅAC*M(X)
00001100 DIV M(X) ACÅAC/M(X)
00010100 LSH Shift left буюу АС-ийн утгыг зүүн тийш 1 байрлалаар шилжүүлнэ
00010101 RSH Shift right буюу АС-гийн утгыг баруун тийш 1 байрлалаар шилжүүлнэ
Хаягийг өөрчлөх 00010010 STOR M(X,8:19) Санах ойн Х хаягтай үүрний зүүн хэсэгт АС-д байгаа өгөгдлийг хадгална
Санах ойн Х хаягтай үүрний баруун хэсэгт АС-д байгаа өгөгдлийг
00010011 STOR M(X,28:39)
хадгална

228
6.2.5. Тасалдал

Компьютерийн хэвийн үйл ажиллагааг хангах зорилгоор процессорын гүйцэтгэх зааврыг таслах
шаардлага заримдаа гардаг. Жишээлбэл арифметикийн overflow, тоог тэгд хуваах зэрэг
үйлдлүүдийг гүйцэтгэхийг оролдох, I/O контоллертой харилцах үед алдаа гарах, санах ойд алдаа
гарсан г.м тохиолдлуудад процессорын үйлдлийг тасалж санах ойг чөлөөлж өгөх шаардлагатай
болдог. Мөн түүнчлэн тасалдлыг процессорын хурдыг бүрэн ашиглахад ашигладаг. Өөрөөр хэлбэл
ихэнх гадны төхөөрөмжүүдийн хурд процессорын хурднаас олон дахин бага байдаг. Жишээлбэл
процессор өгөгдлийг хэвлэх төхөөрөмж рүү илгээсэн тохиолдолд принтер өгөгдлийг барьж автал
процессор пауз авдаг. Өөрөөр хэлбэл аливаа бичих үйлдлийн дараа процессор хэсэг хугацаанд сул
зогсоно. Процессорын гүйцэтгэх аливаа үйлдэл нь дэс дараалсан заавруудыг гүйцэтгэх явдал
байдаг тухай үзсэн. Хэдийгээр процессор нэг секундын хугацаанд хэдэн мянган цикл хийж амждаг
ч гадны төхөөрөмж рүү өгөгдөл бичих хугацаанд процессор ямар нэгэн үйлдэл гүйцэтгэдэггүй.
Гэтэл энэ хугацаанд процессор өөр ямар нэгэн заавруудыг биелүүлэх боломжтой байдаг. Ийм
тохиолдлуудад тасалдлыг ашиглана. Тасалдал нь процессорын гүйцэтгэх үйлдлийг зогсооно.
Жишээ нь тасалдал ашиглаагүй тохиолдолд оролт гаралтын төхөөрөмжийг ашиглах явц нь дараах
байдалтай байна. Энд хэрэглэгчийн программ нь ямар нэгэн үйлдлийг гүйцэтгэсний дараа гарсан
үр дүнг оролт гаралтын төхөөрөмжид бичдэг байг. Тэгвэл эхлээд түүн рүү өгөгдлийг дамжуулна,
дараа нь тухайн төхөөрөмжид өгөгдлийг бичнэ, эцэст нь эргэн процессор уруу хандана. Эндээс
үзвэл оролт гаралтын төхөөрөмжид өгөгдлийг бичих үед процессор ямар нэгэн үйлдэл
гүйцэтгэхгүй хүлээж байдаг байх нь. /зураг 6.19/

зураг 6.19.
Хэрэв тасалдал ашигласан тохиолдолд үйлдлийг гүйцэтгэсний дараа үр дүнг оролт гаралтын
төхөөрөмж рүү дамжуулна. Дараа нь төхөөрөмжид өгөгдлийг бичиж эхлэх үед тасалдал ашиглан
процессор үйлдлийг зогсоогоод дараагийн үйлдлийг гүйцэтгэж эхэлнэ. Энэ үед оролт гаралтын
төхөөрөмжөөс өгөгдлийг бичсэн тухай мэдээллийг процессор уруу дамжуулна. /зураг 6.20/

229
зураг 6.20.
Хэрэв оролт гаралтын төхөөрөмжид өгөгдлийг бичих явц дэндүү удаан байвал процессор тасалдал
ашиглаж байсан ч тодорхой хугацаагаар хүлээх тохиолдол гарна. /зураг 6.21/

зураг 6.21.
Тасалдал ашигласан тохиолдолд зааврын цикл нь дараах хэлбэртэй байна. /зураг 6.22/
ƒ Шаардлагатай зааврын хаягийг тогтооно.
ƒ Зааврыг санах ойгоос олж авна.
ƒ Тухайн зааврын дагуу хийх үйлдлийг тогтооно.
ƒ Өгөгдлийн санах ой дахь хаягийг тогтооно.
ƒ Өгөгдлийг санах ойгоос татан авна.
ƒ Зааврын дагуу өгөгдлийг боловсруулна.
ƒ Үр дүнг хадгална.
ƒ Үр дүнг шинжилж үзээд тасалдлыг ашиглах эсэхийг тогтооно.
ƒ Хэрэв тасалдал ашиглах шаардлагагүй бол дараагийн үйлдлийг биелүүлэхэд хэрэгтэй
зааврыг олж авна.
ƒ Тасалдлыг ашиглах шаардлагатай бол энэ үйлдлийг зогсооно.

230
зураг 6.22.

6.3.1. Бааз

Бааз нь хоёр болон түүнээс дээш төхөөрөмжүүдийг холбох холболтын зам. Иймээс энэхүү баазад
холбогдсон төхөөрөмжүүд баазыг хамтран ашиглана. Олон төхөөрөмжүүд баазыг хамтран ашиглаж
байгаа тохиолдолд ээлжлэн баазыг ашиглах нь тохиромжтой байдаг. Бааз нь хэд хэдэн зэрэгцээ
шугамуудаас тогтох бөгөөд шугам болгон binary 0 болон binary 1 бүхий тоон сигналыг дамжуулна.
Хэрэв бүх сигналуудыг нэг шугамаар дамжуулж байвал үүнийг сериал бааз гэнэ. Харин нэгэн зэрэг
олон шугамаар зэрэг дамжуулж байвал параллель бааз гэнэ. Жишээлбэл 8 битийн параллель бааз
нь нэгэн зэрэг 8 битийг (binary 0 эсвэл binary 1-ийг нэг бит гэнэ) зэрэг дамжуулдаг. Энэ баазыг 8
битийн өргөнтэй гэж нэрлэнэ.
Баазын хурд 2 зүйлээр хязгаарлагдаж байдаг.
ƒ Баазын өргөн буюу баазаар нэгэн зэрэг дамжуулж болох битийн тоо
ƒ Баазад холбогдсон төхөөрөмжүүдийн тоо
Баазыг ерөнхийд нь:
ƒ control line – баазыг ашиглаж байгаа төхөөрөмж, баазаар дамжуулж байгаа мэдээлэл нь
өгөгдөл үү, хаяг уу гэдгийг тодорхойлсон мэдээлэл зэргийг дамжуулах үүрэгтэй
ƒ data line – өгөгдлийг дамжуулах үүрэгтэй
ƒ address line – хаягийг дамжуулах үүрэгтэй гэж 3 ангилна.
Уламжлалт персональ компьютерийн хувьд бааз нь дараах байдалтай байна. Өөрөөр хэлбэл
процессор нь кэш ойтой локаль баазаар, кэш ой нь үндсэн санах ойтой систем баазаар
холбогдоно. Харин бусад төхөөрөмжүүд нь систем баазтай chipset (extension bus interface)-ээр
дамжуулан холбогдсон өргөтгөсөн баазаар (жишээ нь PCI бааз) холбогдоно. /зураг 6.23/

зураг 6.23.
Харин workstation, server based компьютерууд нь энгийн персональ компьютераас арай өөр зохион
байгуулалттай байна. Өөрөөр хэлбэл процессор нь кэш ойтой локаль баазаар, кэш ойн үндсэн
санах ойтой систем баазаар холбогдоно. Үүгээрээ персональ компьютертай адилхан. Харин өндөр
хурдтай ажиллах шаардлагатай төхөөрөмжүүд, жишээ нь видео болон график карт, сүлжээ, хатуу
диск зэрэг нь өндөр хурдтай баазыг ашиглан шууд кэш ойд холбогдох бөгөөд бусад дагалдах
төхөөрөмжүүд, жишээ нь модем, факс, принтер зэрэг нь өргөтгөсөн баазыг (жишээ нь PCI бааз)
ашиглан өмнөх өндөр хурдтай баазтай холбогдоно. /зураг 6.24/

231
зураг 6.24.

6.3.2. Систем бааз

Процессор, санах ой, I/O-ийг холбосон баазыг систем бааз гэж нэрлэх бөгөөд control bus, address
bus, data bus гурван систем бааз байна. /зураг 6.25/

зураг 6.25.
ƒ Data bus – энэ баазаар өгөгдөл дамжуулагдах бөгөөд ихэвчлэн 8, 16, 32, 64, 128, 256 битийн
өргөнтэй байна. Data bus-ийн өргөн буюу нэгэн зэрэг дамжуулах боломжтой өгөгдлийн тоо
компьютерийн үйлдэл гүйцэтгэх хурданд чухал үүрэгтэй. Жишээлбэл 8 битийн өргөнтэй баазаар 16
битийн урттай өгөгдлийг дамжуулахын тулд 2 дахин ачаалах шаардлага гардаг. Иймээс data bus-
ийг CPU-гийн өргөн ч гэж нэрлэдэг. Өөрөөр хэлбэл 32 битийн CPU гэвэл энэ микропроцессорын
data bus нь 32 битийн өргөнтэй гэж ойлгоно.
Processor Data Bus Size
8088 8
80188 8
8086 16
80186 16
80286 16
80386sx 16
80386dx 32
80486 32
80586/Pentium (Pro) 64
ƒ Address bus – энэ баазаар санах ойн хаяг дамжуулагдана. Өөрөөр хэлбэл санах ойн дурын үүрэнд
байрлах өгөгдөлд хандахад түүний хаяг нь энэ баазаар дамжина. Энэ баазын өргөн нь санах ойн
хэмжээнээс хамааран 8-аас 48 битийн хооронд байдаг. Жишээ болгон Intel-ийн 80х86 процессорын
санах ойн баазын өргөн, санах ойн хаягийн хэмжээг үзүүлэв.
Processor Address Bus Size Max Addressable Memory
8088 20 1,048,576 1MB
8086 20 1,048,576 1MB
80188 20 1,048,576 1MB
80186 20 1,048,576 1MB
80286 24 16,777,216 6MB
80386sx 24 16,777,216 6MB
80386dx 32 4,294,976,296 4GB
80486 32 4,294,976,296 4GB
80586 /Pentium (Pro) 32 4,294,976,296 4GB

232
ƒ Control bus – бусад bus-аар дамжуулагдах өгөгдлийн талаарх хяналтын мэдээлэл дамжуулагдана.
Өөрөөр хэлбэл микропроцессор нь data bus-аар дамжуулан өгөгдлийг санах ойгоос унших, эсвэл
санах ойд бичих үйлдлийг гүйцэтгэнэ. Тэгвэл энэ тухай мэдээлэл control bus-аар дамжигдана. Мөн
системийн цаг, тасалдал зэрэг нэмэлт мэдээллүүд мөн энэ баазаар дамжуулагдана. Энэ баазын
өргөн хувьсах болон тогтмол янз бүрийн зохион байгуулалттай байдаг. Мөн компьютер нь санах
ойн хаяг болон оролт/гаралтын төхөөрөмж гэсэн 2 өөр хаяглалтын системтэй байдаг. Өөрөөр
хэлбэл санах ойн хаяг нь санах ойн ямар үүрэнд хандахыг тогтоодог бол оролт/гаралтын хаяг нь
оролт гаралтын төхөөрөмжүүдийн хаягийг тогтоодог. Санах ойн хаяг нь 8-аас 48 битийн өргөнтэй
байдаг бол оролт/гаралтын төхөөрөмжийн хаяг нь 16 битийн өргөнтэй байдаг. Өөрөөр хэлбэл
65536 ялгаатай оролт/гаралтын үүртэй байна. Эдгээрийн тусламжтайгаар гар, хулгана, принтер,
монитор, сканнер зэрэг оролт гаралтын төхөөрөмжүүдийг хаяглана. Оргиналь IBM PC нь эдгээрийн
зөвхөн 1024-ийг нь л ашигладаг. Иймээс address bus-аар дамжуулагдаж байгаа хаяг нь санах ойн
хаяг уу, оролт/гаралтын төхөөрөмжийн хаяг уу гэдгийг control bus-аар дамжуулагдах мэдээллээр
тодорхойлж өгдөг.

6.3.3. PCI бааз

Peripheral Component Interconnect (PCI) бааз нь өндөр bandwidth-тэй (32 ба 64 битийн 2


хувилбартай), оролт/гаралтын төхөөрөмжүүд (жишээ нь график дисплей адаптер, диск
контроллер, сүлжээний контроллер г.м)-тэй өндөр хурдтай холбогдоход зориулагдсан бааз.
Стандарт PCI бааз нь 64 битийг нэгэн зэрэг 33MHz хурдтайгаар (264MB/s буюу 2.112Gbps хурдтай)
дамжуулах боломжтой (bandwidth нь 64). Анх 1990 онд Intel-ийнхэн Pentium процессортой
зориулан энэ баазыг анх гаргажээ. Энэ үеэс эхлэн PCI баазыг энгийн персональ компьютер,
сервер, workstation зэрэгт өргөн ашиглах болсон. 1993 онд дараагийн загвар болох PCI 2.0-ийг
гаргаснаар үйлдвэрлэлийн процессыг автоматжуулахад (mainframe компьютерт) ашиглагдах
болжээ. Жишээ болгон энгийн персональ компьютер болон серверийн бүтцийн схемийг 6.26 ба
6.27-р зурагт үзүүлэв.

зураг 6.26. Энгийн персональ компьютер

233
зураг 6.27. Сервер

6.3.4. Бусад баазууд

Өнөөдөр персональ компьютерт PCI баазыг өргөн ашиглаж байна. (зураг 6.28)

зураг 6.28.
Үүнээс гадна ISA, AGP, USB гэсэн 3 баазыг сүүлийн үед өргөн ашиглах болсон. (зураг 6.29)

зураг 6.29.
ISA bus
16 битийн өргөнтэй 8MHz-ийн хурдтай бааз. Intel 810 chipset-ээс эхлэн ISA баазыг дэмжихээ
байсан. (зураг 6.30) Анхны ISA баазыг PC-XT компьютерт ашиглаж байсан бөгөөд энэ нь 8
битийн өргөнтэй, 4MHz хурдтай байв. 80286-д зориулан 16 битийн хувилбарыг гаргажээ.
ƒ Internal controller – LPT1 (printer, scanner зэрэг параллель төхөөрөмжүүдийг холбоход
зориулагдсан), COM1, COM2 (хулгана, модем зэрэг бусад сериаль төхөөрөмжүүдийг
холбоход зориулагдсан), Floppy (уян дискийн төхөөрөмжийг холбох зориулалттай),
keyboard (компьютерийн гарыг холбох зориулалттай)
ƒ ISA adapter – 16 битийн төхөөрөмжүүдийг холбоход зориулагдсан слотууд

234
зураг 6.30.
PCI bus
Стандарт PCI bus нь 32 битийн өргөнтэй 33MHz хурдтай, PCI 2.0 хувилбар нь 64 битийн
өргөнтэй 66MHz хурдтай. PCI-X хувилбар нь 64 битийн, 133MHz хурдтай боловч төдийлөн
өргөн тархаагүй.
ƒ EIDE controller – Ultra DMA хатуу диск, Zip диск, CD-ROM болон бусад төхөөрөмжийг
холбох зориулалттай
ƒ PCI adapter – график адаптер, сүлжээний карт болон бусад 32 битийн төхөөрөмжүүд,
мөн SCSI controller (SCSI hard disc, SCSI scanner зэрэг SCSI төхөөрөмжүүдийг холбох
зориулалттай)
ƒ FireWire - өндөр хурдтай IEEE 1394 сериаль бааз, digital camera, TV зэрэг 63 хүртлэх
төхөөрөмжийг хамтад нь холбох боломжтой.
AGP bus
64 битийн data баазтай, 32 битийн address баазтай, 66MHz хурдтай, график картыг холбож
өгөх зориулалттай. Pentium II-д зориулсан Intel 440LX chipset-д анх гарч ирсэн. (зураг 6.31)

зураг 6.31.
USB bus
12Mbps хурдтай нэг сериал сувгаар 127 хүртэлх төхөөрөмжийг холбох боломжтой. USB 2.0
хувилбар нь 120-240Mbps хурдтай болсон.
MCA bus
80386, 80486 процессорууд нь 32 битийн процессорууд боловч 16 битийн ISA баазыг ашиглаж
байжээ. Иймээс IBM PS/2 компьютерууддаа зориулан MCA баазыг зохион гаргажээ. Энэ бааз нь
16 ба 32 битийн алинд ч ажиллах чадвартай байв.
EISA bus
ISA баазын өргөтгөсөн хувилбар. Энэ хувилбар 16/32 битийн data баазтай, 24/32 битийн
address баазтай, өмнөх ISA баазтай зохицдог.
IrDA bus
Эдгээрээс гадна уламжлалт параллель порттой адилхан IrDA бааз нь инфра ягаан туяаг
ашиглан холбогдох боломжтой шинэ бааз.

6.4.1. Санах ой

Компьютерт дараах санах ойн байгууламжууд ашиглагддаг.


ƒ Регистер
ƒ Кэш ой
ƒ Үндсэн санах ой
ƒ Зөөврийн зориулалттай диск
ƒ Соронзон ба оптик диск

235
Санах ойн хамгийн бага нэгжийг нүх гэнэ. 1 нүхэнд 1 бит мэдээлэл бичигдэнэ. 8 нүхнүүдийг
нийлүүлээд 1 үүр гэнэ. 1 үүрэнд бичигдэх битийн тоог word буюу үг гэнэ. Хэрэв санах ойн үүр нь 8
битийн багтаамжтай бол санах ойн үгийн урт мөн 8 бит байна. Үүнтэй адилаар санах ойн үүр нь
16, 32 битийн багтаамжтай бол үгийн урт мөн 16, 32 битийн урттай байна.
Санах ойн үндсэн үзүүлэлтүүд:
ƒ Багтаамж: санах ойд агуулагдах боломжтой мэдээллийн багтаамж, байт гэсэн нэгжтэй байна.
1byte=8bit, 1kB=1024byte, 1MB=1024kB, 1Gb=B=1024MB
ƒ Word буюу үг: санах ойн 1 үүрэнд багтах бит
ƒ Address буюу хаяглалт: санах ой дахь нийт үүрний тоо. Хэрэв санах ойн хаяг нь N битээс
тогтдог бол нийтдээ 2N ялгаатай хаягтай буюу 2N үүртэй байна. Иймээс хаяглалтын шугамын
урт (address line) нь N, санах ойн хоорондоо ялгаатай хаягтай үүрний тоо 2N байна.
ƒ Data line буюу дамжууллын шугам: санах ой уруу нэгэн зэрэг өгөгдөл бичих болон унших
боломжтой битийн тоо.
ƒ Transfer rate буюу дамжууллын хурд: өгөгдлийг бусад төхөөрөмжөөс санах ойд бичих болон
санах ойгоос өгөгдлийг унших буюу дамжуулах хурд
ƒ Access rate: санах ойн тодорхой үүрэнд өгөгдөл бичих унших хурд
ƒ Cycle time: санах ой уруу хандах дараалсан хоёр хандалтын хоорондох хугацаа
Санах ойн төрөл Технологи Хэмжээ Хурд
Кэш ой Хагас дамжуулагч 128-512KB 10 ns
Үндсэн санах ой Хагас дамжуулагч 4-512MB 50 ns
Соронзон диск Хатуу диск GB 10 ms, 10 MBps
Оптик диск CD-ROM GB 300 ms, 600 KBps
Соронзон диск tape 100s MB Sec-min, 100MBpm

6.4.2. Шуурхай санах ой

Шуурхай санах ойн өгөгдлийг унших, бичих боломжтой, үргэлж тэжээлээр хангагдаж байдаг тул
тэжээлийг таслахад доторх өгөгдлөө алдана. Иймээс шуурхай санах ойг өгөгдлийг түр хугацаанд
хадгалахад ашигладаг. Шуурхай санах ойн үндсэн 2 төрөл байна.
ƒ Dynamic RAM – динамик шуурхай санах ойн нүх нь конденсаторын цэнэглэгдэх, цэнэгээ алдах
процессыг ашигласан, үнэ өндөртэй, хурд ихтэй.
ƒ Static RAM – статик шуурхай санах ойн нүх нь триггер болон логик элементүүдийг ашигласан,
үнэ хямд, динамик үуурхай санах ойг бодвол хурд бага, овор хэмжээ бага, тэжээл бага
шаардана.
DRAM SRAM
Хэмжээ их Хэмжээ бага
Үнэ өндөр Үнэ бага
Хурд их Хурд бага
Тэжээл өндөр Тэжээл бага
Жишээ нь: 16MB DRAM (4Mx4) /зураг 6.32/

зураг 6.32.
Энэ санах ойн address line нь 22 байх ёстой боловч санах ойн үүр нь 2 хэмжээст матрикс
хэлбэртэйгээр байрлах (211x211=222 буюу 2Kx2K=4M) учир address line нь 11, мөрийг сонгох RAS
(row access strobe), баганыг сонгох CAS (column access strobe) гэсэн 2 оролттойгоор зохион
байгуулагдсан. Data line нь 4 учир 4Mx4=16MB багтаамжтай. Иймээс 32 битийг зэрэг дамжуулахын
тулд 16MB-ийн 8 chip-ийг ашиглана. Энэ санах ойн бүтцийн схемийг 6.33–р зурагт үзүүлэв.

236
зураг 6.33.
Иймээс DRAM-ийг үндсэн санах ойд (memory access time 60 ns), SRAM-ийг кэш ойд (memory access
time 5 ns) ихэвчлэн ашиглана.
Үндсэн санах ойг дараах гурван хэлбэрээр CPU-д холбож ашиглана. Үүнд:
ƒ Simple – CPU, кэш, бааз, үндсэн санах ой 3 адилхан 1 үг (зураг 6.34. а)
ƒ Interleaved – CPU, кэш, бааз 3-ын өргөн нь адилхан 1 үг, санах ойн N module-аас тогтно
(зураг 6.34. b)
ƒ Wide – CPU нь 1 үг, кэш, бааз, санах ой N үг (зураг 6.34. c)

зураг 6.34.
Санах ой уруу хандах хугацаа буюу санах ойгоос өгөгдөл унших/бичих хугацаа нь
микропроцессорын циклийн хугацаанаас бага байдаг. (зураг 6.35)

зураг 6.35.
Иймээс олон модулиас тогтох санах ойн системийг ашигласнаар нэг циклийн хугацаанд санах ойн
модуль бүрд ээлжлэн хандах боломжтой. (зураг 6.36)

зураг 6.36.
DRAM-ийн өөр нэгэн өргөн ашиглагддаг төрөл нь SDRAM (Synchronous DRAM). Энэ санах ойн data
line нь 16 тул 16 битийг зэрэг дамжуулах боломжтой учраас DRAM-аас илүү хурдан болсон.
Сүүлийн жилүүдэд RDRAM (RambusDRAM) өргөн ашиглагдах болсон бөгөөд энэ нь SDRAM-аас илүү
хурдан (memory access time SDRAM 44 ns – RDRAM 38 ns), 800MHz-ийн интернал RAMBUS баазыг
ашигладаг болсон.

237
6.4.3. Тогтмол санах ой

Тогтмол санах ойд бичигдсэн мэдээллийг зөвхөн унших боломжтой бөгөөд түүнийг нь өөрчлөх,
шинээр бичих боломжгүй. Иймээс тогтмол санах ойн тэжээл ашиглахгүй байсан ч өөр дээрх
мэдээллээ хадгалсаар байх болно. Тогтмол санах ойн өөр нэг төрөл нь хэрэглэгчийн зүгээс доторх
мэдээллийг нь өөрчлөх боломжтой программчлагддаг тогтмол санах ой Programmable ROM
(PROM). Жишээ нь 74186 нь 512 битийн PROM (зөвхөн нэг удаа программчлагддаг санах ой).
Программчлагддаг тогтмол санах ойн дараах 3 төрөл өргөн ашиглагддаг.
ƒ Erasable PROM (EPROM) – бичихдээ цахилгаан импульсыг ашиглах бөгөөд арилгахдаа ультра
ягаан туяаг ашиглана. Арилгах хугацаа нь ойролцоогоор 20-оод минут. 100 гаруй удаа арилгаж
болно.
ƒ Electrically EPROM (EEPROM) – бичих болон устгахдаа цахилгаан импульсыг ашиглана. Арилгах
хугацаа нь программаар хийгдэх тул хэдхэн секунд шаардагдана.
ƒ Flash – EEPROM-тай адилхан, шинээр гарч ирсэн программчлагддаг тогтмол санах ой.
Жишээ нь: 8MB EPROM (1Mx8) /зураг 6.37/
1M (220=1M) үгтэй тул address line нь 20 (A0-A19)
Үг нь 8 битээс тогтох тул data line нь 8 (D0-D7)
Vcc – power supply (тэжээл)
Vss – ground (ерөнхий газардуулга)
CE – chip enable
Vpp – program voltage (программ бичилтийг хангах зорилготой)

зураг 6.37.
Санах ойн төрөл Категори Устгах Бичих механизм Тэжээл
Random Access Memory (RAM) Read-write memory Electrically, byte level electrically volatile
Read Only Memory (ROM) Read only memory Not possible - Non-volatile
Programmable ROM (PROM) Read only memory Not possible electrically Non-volatile
Erasable PROM (EPROM) Read mostly memory UV light, chip level electrically Non-volatile
Flash memory Read mostly memory Electrically, block level electrically Non-volatile
Electrically erasable PROM (EEPROM) Read mostly memory Electrically, byte level electrically Non-volatile

6.4.4. Кэш ой

Микропроцессорын өгөгдлийг боловсруулах хурд нь санах ойгоос өгөгдлийг унших, бичих хурдаас
олон дахин их байдаг. Өөрөөр хэлбэл санах ойд байгаа өгөгдлийг унших бичих хурд нь
микропроцессорын хурдыг гүйцдэггүй. Иймээс үүнийг зохицуулах зорилгоор үндсэн санах ойг
бодвол бага багтаамжтай, хурд ихтэй шуурхай санах ойг ашигладаг бөгөөд үүнийг кэш ой гэнэ.
Иймээс кэш ойг микропроцессор болон үндсэн санах ойн хооронд өгөгдлийг дамжуулах явцыг
хангаж өгөх зориулалттай өндөр хурдтай завсрын ой гэж ойлгож болно. (зураг 6.38)

238
зураг 6.38.
Кэш ой болон микропроцессор 2-ын хооронд дамжуулах өгөгдөл нь үг бол кэш ой болон үндсэн
санах ойн хооронд дамжуулах өгөгдөл нь блок байна. Энд 1 блокыг хэд хэдэн үгнээс тогтдог гэж
үзэж болно. (зураг 6.39)

зураг 6.39.
Микропроцессор нь санах ойгоос үгийг уншихдаа эхлээд тухайн үг кэш ойд байгаа эсэхийг
шалгана. Хэрэв хэрэгтэй үг кэш ойд олдвол үндсэн санах ой уруу хандалгүй шууд кэш ой уруу
хандана. Иймээс кэш ойн ажлын хурдыг ихэсгэж өгдөг сайн талтай. Хэрэв тухайн үг кэш ойд
байхгүй бол уг үгийг багтаасан блокыг үндсэн санах ойгоос кэш ой уруу дамжуулна.
Кэш ой нь гадаад (L2 cache) дотоод (L1 cache) гэсэн 2 янз байна. L1 кэш нь микропроцессор дотор
байрладаг бол L2 кэш нь микропроцессорын гадна байрлана. Эдгээр санах ойнуудын
характеристикыг хооронд харьцуулан 6.40-р зурагт үзүүлэв.

зураг 6.40.
Кэш ойд өгөгдлийг хэрхэн байрлуулдгийг авч үзье. Жишээ нь 16 үгтэй, үгийн урт нь 1 байт
хэмжээтэй санах ойгоос блокын хэмжээ нь 4 байт байх кэш ойг хэрхэн үүсгэхийг үзье. (зураг 6.41)

239
зураг 6.41.
Хэрэв санах ойн address bus нь 32 битийн өргөнтэй, кэшийн хэмжээ 2n байт, блокын хэмжээ 2m
байт бол кэшийн address нь дараах хэлбэртэй байна. (зураг 6.42)

зураг 6.42.
Жишээ 6.3. 16KB-ийн кэш ой
16KB-ийн кэш ойн блокын хэмжээ нь 16 байт, кэшийн хэмжээ нь 1024 блок (16 byte x 1024) (зураг
6.43)

зураг 6.43.
Блокын хэмжээ нь 24 байт тул offset-ийн хэмжээ нь 4 бит, кэшийн хэмжээ нь 210 байт тул index-ийн
хэмжээ 10 бит, үлдсэн 18 бит нь cache tag болно. Index нь кэш дэх блокын байрлалыг, offset нь
блок дотор байтын байрлалыг тус тус заана. Жишээлбэл 00000000000000 0000000001 1100 гэсэн
хаягийн 0000000001 нь кэш дэх блокын байрлалыг, 1100 нь блок дахь байтын байрлалыг тус тус
заана. Өөрөөр хэлбэл кэш дэх 1-р блокын 12-15-р байтыг заана. (зураг 6.44)

240
зураг 6.44.
Хэрэв 00000000000000 0000000001 0100 бол 1-р блокын 4-7-р байтыг заана. (зураг 6.45)

зураг 6.45.
Хэрэв 00000000000000 0000000011 0100 бол 3-р блокын 4-7-р байтыг заана. (зураг 6.46)

зураг 6.46.
1-р блокын өгөгдөл өөрчлөгдөхөд cache tag шинэчлэгдэнэ. (зураг 6.47)

241
зураг 6.47.

6.5.1. Гадаад санах ой

Гадаад санах ойн төхөөрөмжүүдийг дотор нь дараах байдлаар хувааж болно.


ƒ Соронзон диск (уян диск, хатуу диск)
ƒ Оптик диск (CD-ROM, WORM, DVD)
ƒ Соронзон type
Соронзон диск нь дотроо:
ƒ Уян диск (floppy disk)
ƒ Хатуу диск (Winchester hard disk)
ƒ Зөөврийн диск (removable hard disk) гэсэн 3 хэлбэртэй байна.
Дискэн дээр өгөгдлийг бичихдээ дискийг эхлээд бэлднэ. Үүний тулд дискийг trace буюу
цагиргуудад хуваана. (зураг 6.48) 1 surface-д ойролцоогоор 500-2000 trace байна. Энд surface
гэдэгт дискийн нэг талыг ойлгоно. Жишээ нь ихэнх хатуу дискэн дискийн 2 талд бичих боломжтой
(2 surface) бол оптик дискүүд зөвхөн 1 талд нь (1 surface) бичих боломжтой байна. Trace болгонд
хадгалагдах битүүд адилхан байна. Trace-уудын хоорондох зайг inter-trace gap гэнэ. Өөрөөр хэлбэл
trace-ууд нь хоорондоо gap-аар тусгаарлагдана.

зураг 6.48.
Trace-ийг цааш нь секторуудад хуваана. (зураг 6.49) 1 trace нь 10-100 секторт хуваагдана. Секторт
тодорхой тооны блок өгөгдөл хадгалагдана. Хамгийн багадаа 1 секторт 1 блок өгөгдөл
хадгалагдаж болно. Секторуудыг хооронд нь тусгаарлагчийг inter-sector gap гэнэ.

242
зураг 6.49.
Ихэнх хатуу диск нь хэд хэдэн дискүүдээс тогтно. Эдгээр дискүүдийг ерөнхийд нь platter гэж
нэрлэнэ. Platter болгоны 2 талд өгөгдлийг бичих боломжтой байх бөгөөд тэдгээрийг surface гэнэ.
Олон platter-аас тогтсон системийн хувьд trace-уудыг цилиндр гэдэг ойлголтоор сольж ойлгоно.
Surface болгон дээр өгөгдөл бичиж, унших толгой (head) байрлах бөгөөд ихэнх тохиолдолд тэдгээр
нь тусгай arm гэж нэрлэгддэг хэвтээ тэнхлэгийн дагуу чөлөөтэй хөдлөх боломжтой сууринд
суурилагдсан байна. Үүний тусламжтайгаар head нь дурын trace уруу шилжих боломжтой байна.
Дискүүд нь rotate гэж нэрлэгддэг босоо тэнхлэгийн дагуу чөлөөтэй эргэх боломжтой сууринд
суурилагдсан байх тул head үүний тусамжтайгаар дурын секторт мөн шилжиж чадна. (зураг 6.50)

зураг 6.50.
Хатуу дискээс өгөгдлийг унших бичих хурд нь trace-ийг хайж олох хугацаа, секторыг хайж олох
хугацаа, олсон секторт өгөгдөл бичих, унших хугацаа гэсэн хугацаануудын нийлбэрээр
тодорхойлогдоно.
access time = seek time + rotation time + transfer rate
seek time – trace-ийг хайж олох хугацаа
rotation time – секторыг хайж олох хугацаа
transfer rate – дискэнд өгөгдөл бичих\унших хурд
Хатуу дискийг үндсэн хэсэг (primary partition) болон хэд хэдэн дэд хэсгүүдэд (extended partition)
хуваах замаар нэг дискийг хэд хэдэн логик дискүүд болгон хувааж болдог. Өөрөөр хэлбэл нэг
дискийг хэд хэдэн логик диск болгон ашиглаж болно. Үүнийг partition table-ийг үүсгэх замаар
шийдэж өгдөг.

243
Харин сектор доторх толгой хэсэг (ID талбар), өгөгдлийн эзлэх байр (data талбар), тусгаарласан
хоосон зай (gap) зэргийг тогтоон дискэн дээр өгөгдлийг бичихэд бэлтгэж өгөхийг дискийг
форматлах үйл явцаар шийдэж өгнө.
Жишээ болгон Winchester хэлбэрийн хатуу дискийн нэг trace-ийг хэрхэн форматладаг болохыг авч
үзье. (зураг 6.51)
ƒ Trace болгон тус бүр нь 600 байт мэдээлэл агуулах боломжтой 30 сектороос тогтно.
ƒ Үүний 515 байтад өгөгдлийг хадгалах зориулалттай data талбар эзэлнэ.
ƒ 7 байтын урттай ID талбар нь тухайн секторын хаягийг агуулна. Энд trace, head, sector-ийн
дугаарууд байрлана.
ƒ Synch byte нь тухайн талбарын эхлэлийг тэмдэглэнэ.
ƒ CRC нь алдааны хяналт
ƒ Gap нь секторууд, ID болон data талбаруудыг хооронд тусгаарлах зориулалттай байна.

зураг 6.51.

6.5.2. Оптик диск

1983 онд тоон аудио мэдээлэл агуулах зорилготой анхны компакт диск зохион бүтээгджээ. Анхны
энэ CD нь бичигдсэн өгөгдлийг арилгах боломжгүй, 60 минутын хугацаанд үргэлжлэх аудио
мэдээллийг агуулах багтаамжтай байв. Компакт диск нь үнэ хямдтай, нэлээд хэмжээний тоон
өгөгдлийг өөр дээрээ хадгалах боломжтой тул компьютерт тоон өгөгдлийг хадгалах зорилгоор
ашиглах болжээ. Сүүлийн жилүүдэд энэ оптик дискний нэлээд хэдэн хувилбарууд гарсан бөгөөд
эдгээрийн талаар товч танилцуулья.
ƒ CD (compact disc) – тоон аудио мэдээллийг агуулах зорилготой. Нэг тал дээр нь 60 минутын
хугацаанд үргэлжлэх аудио мэдээллийг агуулах боломжтой, дээр нь бичигдсэн мэдээллийг
устгах боломжгүй.
ƒ CD-ROM (compact disc read only memory) – тоон мэдээллийг агуулах зорилготой. Нэг тал
дээр нь 550MB өгөгдлийг багтаах боломжтой, дээр нь бичигдсэн мэдээллийг устгах
боломжгүй.
ƒ DVI (digital video interactive) – видео мэдээллийг агуулах зорилготой. CD болон бусад оптик
дискүүдийг ашиглана.
ƒ WORM (writer once read many) – 1 удаа бичих боломжтой, 200-800MB-ийн багтаамжтай
оптик диск.
ƒ Erasable Optical Disk – олон дахин бичих боложтой, 650MB-ийн багтаамжтай оптик диск.
Audio CD болон CD-ROM – нь адилхан технологиор хийгддэг. Trace-уудын хоорондох зайн 1,6
микрон (1.6*10-6 meter), нийтдээ 20344 trace-уудаас тогтох бөгөөд нэг онцлог нь бүх trace-ууд нь
нэг л спираль хэлбэртэй. Иймээс нийт trace-ийн урт ойролцоогоор 5.27 км. Компакт диск нь 1
секундэд 1.2 м урттай өгөгдлийг уншдаг гэвэл компакт дискэн дээрх нийт өгөгдлийг уншихад 4391
секунд буюу 73.2 минут шаардлагатай. (зураг 6.52)

244
зураг 6.52.
Компакт дискэн дээрх өгөгдөл цуваа байрласан блокуудаас тогтсон байна. 1 блокын хэмжээ нь
2352 байт байх бөгөөд дараах хэсгүүдээс тогтно: (зураг 6.53)
ƒ Sync – блокын эхлэлийг заана
ƒ Header – блокын хаяг болон байтын хэлбэрийг заана. Хэрэв mode 0 бол data талбар нь хоосон,
mode 1 бол data талбарт алдааны хяналттай 2048 байт өгөгдөл, mode 2 бол data талбарт
алдааны хяналтгүй 2336 байт өгөгдөл (auxiliary талбар байхгүй) болохыг тогтоож өгнө.
ƒ Data – энэ талбарт өгөгдөл байрлана.
ƒ Auxiliary – энэ талбарт хэрэв өгөгдөл нь mode 2 хэлбэртэй бол өгөгдөл, mode 1 хэлбэртэй бол
алдааны код тус тус байрлана.

зураг 6.53.

6.5.3. Виртуаль санах ой

Хатуу дискийн төхөөрөмжийг үндсэн санах ойтой адилхан зорилгоор ашиглахын тулд виртуаль ой
гэж нэрлэгдэг логик санах ойг ашигладаг. Виртуаль ойг үүсгэхэд дараах зүйлүүдийг тооцоолох
хэрэгтэй.
ƒ Хатуу диск уруу өгөгдөл бичих унших хурд үндсэн санах ой дахь өгөгдлийг унших бичих
хурдаас олон дахин бага байдаг.
ƒ Компьютер зааврыг биелүүлэх үед виртуаль санах ойн хаягийг ашиглана. Гэтэл энэ логик
санах ойн хаяг нь үндсэн санах ойн физик хаягнаас ялгаатай байдаг.
Виртуаль ойг үүсгэх paging гэдэг аргыг өргөн ашигладаг. Үүгээр:
ƒ Виртуаль санах ойн ижилхэн хэмжээтэй хуудаснууд болох page-уудаас тогтно.
ƒ Энэхүү page-ууд нь бүгд өөрийн гэсэн логик хаягтай байх ба логик хаяг нь page, byte offset
гэсэн 2 хэсгээс тогтно. (зураг 6.54)
ƒ Page-уудын логик хаягуудыг page table-д бүртгэж авсан байна. Энэ нь page-ийн логик
хаягийг физик хаяг уруу хөврүүлнэ. (зураг 6.55)

245
зураг 6.54.

зураг 6.55.

6.6.1. Оролт/гаралтын модуль

Оролт/гаралтын модуль нь гадны төхөөрөмжүүдийг баазтай холбох зорилготой. Компьютерт


дараах үндсэн 3 модуль ашиглагддаг. (зураг 6.56) Үүнд:
ƒ Санах ой – N үгнээс тогтох бөгөөд санах ойн үүрэнд өгөгдлийг бичих болон уншихын аль
нь болохыг тогтоосон write/read, санах ойн үүрний хаягийг дамжуулах address, өгөгдлийг
санах ойн үүрэнд бичих data гэсэн оролтын, санах ойгоос өгөгдлийг унших data гэсэн
гаралтын портуудтай.
ƒ Оролт/гаралтын модуль – оролт гаралтын төхөөрөмжүүд рүү хандах M портоос тогтох
бөгөөд тухайн портод холбогдсон төхөөрөмжид өгөгдлийг бичих болон уншихыг тогтоох
зорилготой read/write, аль порт уруу хандахыг тогтоох address, CPU болон санах ойгоос
өгөгдлийг дамжуулах internal data, бусад гадны төхөөрөмжүүдээс өгөгдлийг дамжуулах
external data гэсэн оролтын, CPU болон санах ой уруу өгөгдлийг бичих internal data, бусад
гадны төхөөрөмжүүд рүү өгөгдлийг бичих external data, тасалдлыг дамжуулах interrupt
гэсэн гаралтын портуудтай.
ƒ CPU – CPU уруу зааврыг дамжуулах instruction, өгөгдлийг дамжуулах data, тасалдлыг
дамжуулах interrupt гэсэн оролтын, CPU боловсруулсан өгөгдлийг регистер, санах ой,
гадны төхөөрөмж рүү бичих data, эдгээрийн талаарх хяналтын мэдээллийг агуулсан control
гэсэн гаралтын портуудтай.

246
зураг 6.56.
Дараах төрлийн оролт гаралтын төхөөрөмжүүдийг компьютерт ашиглана.
Device Behavior Partner Data Rate (KBps)
Keyboard Input Human 0.01
Mouse Input Human 0.02
Voice input Input Human 0.02
Scanner Input Human 200.00
Voice output Output Human 0.60
Line Printer Output Human 1.00
Floppy disk Storage Machine 50.00
Laser Printer Output Human 100.00
Optical Disk Storage Machine 500.00
Magnetic Disk Storage Machine 2000.00
Network-LAN I or O Machine 200.00
Network-terminal I or O Machine 0.05
Graphics Display Output Human 30,000.00
Микропроцессор нь маш өндөр хурдтайгаар үйлдлийг гүйцэтгэнэ. Харин оролт/гаралтын
төхөөрөмжийн хурд харьцангуй удаан. Жишээлбэл 500MHz-ийн микропроцессор 1 секундэд 500
сая зааврыг гүйцэтгэх боломжтой. Өөрөөр хэлбэл түүний хурд нь 200000KBps. Гэтэл
оролт/гаралтын төхөөрөмжийн хурд нь 0.01-30000KBps. Иймээс оролт/гаралтын төхөөрөмжийн
хурд харьцангуй удаан тул микропроцессор оролт/гаралтын төхөөрөмжийг ашиглахыг хүссэн үед
оролт/гаралтын төхөөрөмж бэлэн болж амжаагүй байж болно. Энэ асуудлыг шийдэх зорилгоор
дараах 2 регистерийг ашигладаг.
ƒ Control register – оролт/гаралтын төхөөрөмжийг ашиглахад бэлэн байна уу, үгүй юу гэдгийг
тогтоосон статус битийг агуулна.
ƒ Data register – өгөгдлийг түр зуур хадгална.
Өөрөөр хэлбэл оролт/гаралтын төхөөрөмж рүү дамжуулсан өгөгдөл data register-д control register-
ээс оролт/гаралтын төхөөрөмжийг ашиглаж болно гэсэн мэдээг иртэл хадгална.
I/O module нь оролт гаралтын төхөөрөмжүүдийг баазтай холбож өгнө. (зураг 6.57)

зураг 6.57.
I/O module-ийн бүтцийн схемийг 6.58-р зурагт үзүүлэв. CPU-гээс I/O module уруу data, address,
control гэсэн 3 шугамаар мэдээлэл дамжуулагдана. Data шугамаар өгөгдөл, address шугамаар оролт
гаралтын ямар төхөөрөмжийг ашиглах хаягийг, control шугамаар read, write буюу өгөгдлийг унших,

247
бичих аль болохыг тогтоосон мэдээлэл CPU-гээс I/O module уруу, I/O module-аас CPU рүү rеady,
not ready буюу төхөөрөмжийг ашиглахад бэлэн, бэлэн бус байгаа тухай мэдээллийг тус тус
дамжуулна. Оролт гаралтын төхөөрөмжүүд нь тодорхой хаягтай байна. Жишээ нь 1000 хатуу диск,
1001 уян диск г.м-ээр.

зураг 6.58.
Гадаад төхөөрөмжүүд нь I/O module-тай холбогдохдоо тусгай интерфейсүүдийг ашиглана. Гадаад
төхөөмжийн интерфейс нь хяналт control, статус status, өгөгдөл data гэсэн 3 шугамаас тогтно. Data
нь I/O module уруу өгөгдлийг илгээх болон хүлээн авахад, status нь төхөөрөмжийг тухайн үед
ашиглаж болох эсэхийг шалгасан статус битийг илгээх, хүлээн авахад, control нь I/O module болон
гадаад төхөөрөмжийн харьцах харьцааг тодорхойлсон мэдээллийг илгээхэд тус тус ашиглагдана.
Жишээлбэл I/O module уруу өгөгдлийг илгээх буюу унших, I/O module-аас гадаад төхөөрөмж уруу
өгөгдлийг бичих г.м. энэ нь тухайн төхөөрөмжийн толгой head хэсэгт байна. (зураг 6.59)
ƒ Control logic нь I/O module уруу хандах ажиллагааг хянана.
ƒ Transducer нь өгөгдлийг хөврүүлнэ.
ƒ Buffer нь өгөгдлийг түр хадгална. Энэ нь ерөнхий тохиолдолд 8-аас 16 битийн хэмжээтэй
байна.

зураг 6.59.

6.6.2. Оролт/гаралтын үйлдлүүд

Оролт гаралтын командууд


ƒ Control – оролт гаралтын төхөөрөмж (I/O device)-ийг ашиглаж болох эсэхийг тогтооно
ƒ Test – I/O module ба төхөөрөмж 2-ын хоорондох холболтыг шалгана
ƒ Read - өгөгдлийг төхөөрөмж (I/O device)-ээс I/O module-ийн буферт хуулна. Дараа нь
эндээс өгөгдлийг CPU-гийн регистер эсвэл санах ой уруу зөөнө

248
ƒ Write - өгөгдлийг CPU-гийн регистер эсвэл санах ойгоос I/O module-ийн буферт хуулна.
Дараа нь эндээс төхөөрөмж рүү зөөнө
Программчлагдсан I/O
ƒ CPU оролт гаралтын төхөөрөмжийг ашиглах тухай хүсэлтийг гаргана.
ƒ Хүсэлтийг I/O module хүлээн авч тухайн төхөөрөмжийг ашиглахад бэлэн эсэхийг шалгана.
ƒ Хэрэв бэлэн биш бол CPU хэсэг хугацааны дараа ахин хүсэлтийг илгээнэ.
Жишээ нь read командыг хэрхэн биелүүлэхийг үзье.
ƒ CPU read командыг I/O module-д гаргана.
ƒ I/O module статус регистерт байрлах статус битийг шалгах замаар оролт гаралтын
төхөөрөмжийг ашиглахад бэлэн эсэхийг шалгана.
ƒ Хэрэв төхөөрөмжийг ашиглахад бэлэн бол өгөгдлийг I/O module-ийн data буферт хуулна.
ƒ CPU дээрх үйлдэл дууссан эсэхийг шалгана. Дуусаагүй бол үүний нь статус битээс олж
мэднэ.
ƒ Хэрэв үйлдэл дууссан бол I/O module-аас үгийг регистерт хуулна.
ƒ Дараа нь өгөгдлийг CPU-гийн регситерээс санах ойд хуулна.
ƒ Хэрэв read командаар хуулах өгөгдлийн урт 1 үгээс хэтэрсэн бол дээрх үйлдлийг давтана.
Жишээ нь Intel 8255A programmable peripheral interface-ийг үзье. (зураг 6.60)

зураг 6.60.
Энэ интерфейсийг гар, монитор зэрэг төхөөрөмжүүдийг холбоход ашиглана. (зураг 6.61)

зураг 6.61.

249
Interrupt driven I/O
Программчлагдсан I/O үйлдлийг гүйцэтгэх үед I/O үйлдлийг дуустал CPU хүлээх шаардлага
гардаг. Учир нь I/O үйлдэл нь CPU-гийн хурдтай харьцуулахад удаан биелэгдэнэ. I/O үйлдлийг
дуустал CPU өөр үйлдлийг гүйцэтгэх боломжийг тасалдал ашиглан олгоно.
ƒ CPU read/write командыг хийх хүсэлтийг гаргана.
ƒ CPU программыг үргэлжлүүлэн дараагийн зааврыг гүйцэтгэнэ.
ƒ I/O module/device нь I/O үйлдлийг гүйцэтгэнэ.
ƒ Үйлдлийг гүйцэтгэж дууссаны дараа I/O module-аас тасалдлыг CPU уруу явуулна.
ƒ CPU тасалдлыг хүлээн авч одоо гүйцэтгэж байгаа үйлдлээ зогсооно.
ƒ CPU одоо биелэж байгаа программын статусыг хадгална.
ƒ CPU тест хийх замаар ямар төхөөрөмж тасалдлыг илгээснийг тогтооно.
ƒ CPU I/O module-аас үгийг регистер эсвэл санах ойд хуулна.
ƒ CPU өмнөх үйлдлээ үргэлжлүүлэн биелүүлнэ.
Жишээ нь Intel 8259A Interrupt controller-ийг үзье.
Intel 8086 процессор нь тасалдлыг хүлээн авах INTA гэсэн нэг оролттой. Иймээс олон тооны
гадаад төхөөрөмжийг ашиглаж байх үед тэр болгоны тасалдлыг зохицуулах зорилгоор 8259A
Interrupt controller-ийг ашиглана. (зураг 6.62)

зураг 6.62.
DMA (direct memory access)
1 үгнээс илүү урттай өгөгдлийн хувьд CPU-гийн үйлдлийг олон дахин таслах шаардлага гардаг.
Үүнийг шийдэх зорилгоор DMA module-ийг ашиглана. Энэ нь I/O module санах ой 2-ыг шууд
холбож өгөх зорилготой. Өмнөх программчлагдсан I/O ба interrupt driven I/O нь өгөгдлийг
санах ойгоос төхөөрөмж рүү илгээх эсвэл төхөөрөмжөөс санах ой уруу илгээх үйлдлийг CPU-
гээр дамжуулан явуулдаг байсан ба хоорондох ялгаа нь энэ үйлдлийг гүйцэтгэхдээ нэг нь
тасалдал ашигладаггүй, нөгөөх нь тасалдал ашигладагт л байсан. Харин DMA нь дээрх
үйлдлийг CPU-гээр дамжуулахгүй шууд санах ой оролт гаралтын төхөөрөмжийн хооронд
явуулдгаараа ялгаатай.
DMA module-ийг ашиглах 3 үндсэн арга байдаг.
Эхнийх нь DMA module-ийг CPU, санах ой, оролт гаралтын төхөөрөмжүүдтэй 1 баазад холбох.
(зураг 6.63) Энэ тохиолдолд дамжуулал бүрд баазыг 2 удаа ашиглана. I/O device-аас DMA уруу,
DMA-гаас санах ой уруу. Иймээс CPU 2 удаа баазыг ашиглахгүй хүлээнэ гэсэн үг.

250
зураг 6.63.
Дараагийнх нь DMA module-ийг 6.64-р зурагт үзүүлсний дагуу холбох. Ингэснээр дамжуулал
бүрд баазыг нэг л удаа ашиглана. Иймээс дамжуулал хийх үед CPU баазыг ашиглахгүй нэг удаа
зогсоно.

зураг 6.64.
Гуравдахь нь DMA module болон оролт гаралтын төхөөрөмжүүдийг хооронд нь холбосон тусгай
оролт гаралтын бааз (PCI, AGP, ISA, USB г.м)-ыг ашигласан тохиолдол. (зураг 6.65)

зураг 6.65.

6.7.1. Микропроцессорын хөгжлийн товч түүхээс

ƒ 1969 онд Japanese calculator company, Busicomp компаниудын захиалгын дагуу


Intel Corporation тооны машинд зориулсан хэд хэдэн chip-ийг хийжээ. Intel-ийн
инженер Mercian (Ted) Hoff ерөнхий нэг chip-ийн тусламжтайгаар
программчлагддаг, олон үйлдлийг гүйцэтгэх чадвартай байгууламжийг хийх
зураг 6.66. санааг анх гаргаснаар удалгүй 1971 оны 11-р сарын 15-нд Intel Corporation анхны
Intel 4004 микропроцессорыг (микропроцессорыг цаашид зүгээр л процессор гэж
нэрлэе) хийсэн. /зураг 6.66/
Энэ нь анхны үйлдэл гүйцэтгэх чадвартай бүх элементүүдийг нэг chip дээр байрлуулсан
байгууламж байлаа. 4004 процессор нь 4 битийн 2 тоог хооронд нь нэмэх, үржүүлэх, хуваах
чадвартай байв. Хэдийгээр энэ процессор 4 битийн хувьд үйлдэл хийх боломжтой ч заавар нь 8
битийн урттай байв. Өөрөөр хэлбэл энэ процессорын data bus нь 4 бит, address bus нь 8 битийн
өргөнтэй байв. Программ болон өгөгдөл нь тус тусдаа хадгалагддаг бөгөөд 1KB өгөгдөл, 4KB-ийн
хэмжээтэй программыг хадгалах чадвартай. 46 заавартай, 2300 транзистор ашиглаж байв. Clock
speed буюу хурд нь 108kHz (CPU-гийн үйлдэл хийх 1 цикл нь 8 зэрэг үйлдэл гүйцэтгэх циклээс
тогтох ба энэ үйлдэл гүйцэтгэх хурдыг clock speed гэх бөгөөд цаашид зүгээр л хурд гэж нэрлэе.
108kHz гэдэг нь 1 секундын хугацаанд 108k цикл хийх боломжтой гэсэн үг)
ƒ 1972 онд Intel 4004-ийг сайжруулсан Intel 4040 процессорыг хийжээ. Энэ нь өмнөх хувилбараасаа
14 заавраар илүү, программ хадгалах санах ойн хэмжээ 8KB болтлоо нэмэгдсэн байлаа.
ƒ Мөн оны 4 сард 8 битийн процессор болох Intel 8008 процессорыг үйлдвэрлэв.
Энэ нь нэгэн зэрэг 8 битийн 2 тоон дээр үйлдэл хийх чадвартай байлаа. Энэ
процессорын data bus нь 8 бит, address bus нь 14 бит, хурд нь 200kHz, 3450
зураг 6.67. транзистор ашигласан, санах ойн багтаамж нь 16KB болтлоо ихэссэн байв.
/зураг 6.67/
ƒ 1974 оны 4-р сард Intel 8080 процессор гарсан. Энэ нь 8008
процессортой төсөөтэй 8 битийн процессор боловч түүнээс арай
хурдан, зааврын тоо нь их, санах ойн багтаамж их г.м давуу
зураг 6.68.
талуудтай байв. Мөн 16 битийн address bus-тай, 8 битийн data bus-

251
тай, 6000 транзистор ашигласан, санах ойн багтаамж нь 64KB
болтлоо ихэссэн байв. Энэ процессор нь 3 хувилбартай бөгөөд
1974 онд гарсан 8080 хувилбар нь 2MHz хурдтай, 1976 онд гарсан
дараагийн хоёр хувилбарууд болох 8080А-2 нь 2.67MHz хурдтай,
8080А-1 нь 3.125MHz хурдтай байв. /зураг 6.68/
ƒ Энэ процессор дээр үндэслэгдэн анхны микрокомпьютер хийгдсэн.
зураг 6.69. Энэ нь 1975 оны 1-р сард бүтээгдсэн MITS Altair 8800 байв. /зураг
6.69/
ƒ Энэ үеэс хэсэг инженерүүд 8080 процессорыг сайжруулах
зорилгоор Intel-ээс салан гарч Zilog Corporation-ийг байгуулан
8080-ийг сайжруулсан 8 битийн Z-80 процессорыг үйлдвэрлэжээ.
Z-80-ын хурд 2.5MHz, Z80-H (хожим Z80-C гэж нэрлэгдэх болсон)
нь 8MHz, сүүлд гарсан CMOS хувилбарынх нь хурд 10MHz байв.
Radio Shack-ынхан Z-80 процессорыг ашиглан TRS-80
микрокомпьютерийг хийжээ. 1984 онд Hitachi 1984-ийг
үйлдвэрлэсний дараа 1987 онд Zilog, Hitachi нар хамтран Z-80-ийн
бусад төхөөрөмжүүдтэй зохицон ажиллахад зориулагдсан Z-180 ба
HD64180Z процессоруудыг үйлдвэрлэжээ. Эдгээр нь Z-181, Z-182
гэсэн хувилбаруудтай. 1987 оны 7-р сард 16 битийн Z-280
процессорыг бүтээсэн бөгөөд 1994 онд 16/32 битийн Z-380
зураг 6.70. хувилбаруудыг гаргажээ. /зураг 6.70/
ƒ 1974 онд Motorola-гийнхан Motorola 68000 процессорыг үйлдвэрлэжээ. Энэ нь Intel 8086 болон
MOSTech 6502 процессоруудын адил 8 битийн процессор байсан бөгөөд 8 битийн data bus, 16
битийн address bus-тай, хурд нь 1MHz байв. Энэ үеэс эхлэн процессорын хөгжил нь IBM (Intel
80х86) ба Apple Macintosh (Motorola 680х0) гэсэн 2 үндсэн чиглэлээр хөгжих болсон
ƒ 1978 онд анхны 16 битийн Intel 8086 процессор үйлдвэрлэгдсэн. Энэ
процессор 20 битийн address bus-тай, 16 битийн data bus-тай, 29000
транзистор ашигласан, санах ойн багтаамж нь 1МB болтлоо ихэссэн байв.
зураг 6.71. Энэ процессор нь 3 хувилбартай бөгөөд 8086 хувилбар нь 5MHz хурдтай,
8086-2 нь 8MHz хурдтай, 8086-1 нь 10MHz хурдтай байв. /зураг 6.71/
ƒ 1979 онд 8086-г сайжруулсан 8088 процессор гарсан. Энэ нь анхны математик үйлдлийг
гүйцэтгэхэд зориулагдсан math процессор Floating Point Unit (FPU) 8087-г ашигласан байв. Intel-
ийнхэн энэ процессорын патентыг Advanced Micro Devices, Harris, Siemens зэрэг компаниудад
худалдснаар эдгээр компаниуд янз бүрийн хувилбаруудыг гаргажээ. Жишээлбэл Siemens-ийн
гаргасан хувилбар нь эдгээр хувилбаруудаас 2 дахин их хурдтай байв. Мөн 1981 онд гарсан NEC
V20 ба V30 хувилбарууд нь 8086 ба 8088-аас 30% хурдан байв.
ƒ Мөн худалдаанд зориулан 1980 онд 8 ба 16 битийн хувилбаруудтай 80186 процессороо гаргасан.
Худалдан авагчид түүний CHMOS ба HMOS chip ашигласан хувилбаруудаас сонгох боломжтой. 1990
оноос Intel-ийнхэн Enhanced 186 Family уруу шилжсэн. Ингэснээр system controller, interrupt
controller, DMA controller, timing circuitry right нь бүгд CPU-тэй хамт нэг схем /core/ дээр хийгдсэн.
Гэвч энэ процессорыг PC-д ерөөсөө ашиглаагүй.
ƒ 1982 оны 2-р сард санах ойн багтаамжийг 1MB байсныг нь 16MB хүртэл
ихэсгэсэн шинэ хувилбарыг гаргасан бөгөөд түүнийгээ Intel 80286 гэж
нэрлэсэн. Энэ процессор 24 битийн address bus-тай, 16 битийн data bus-
зураг 6.72. тай, 134000 транзистор ашигласан, санах ойн багтаамж нь 16МB болтлоо
ихэссэн, FPU 80287-г ашигласан байв. /зураг 6.72/
Энэ процессор нь 3 хувилбартай бөгөөд 80286 хувилбар нь 8MHz хурдтай, 80286-2 нь 10MHz
хурдтай, 80286-1 нь 12MHz хурдтай байв. Мөн энэ процессор нь физик санах ойгоос гадна
виртуаль санах ойг ашиглах боломжтой болсон. Мөн түүнчлэн нэгэн зэрэг олон үйлдлийг зэрэг
хийх боломжтой болсон нь тухайн үед гараад байсан DOS үйлдлийн системд ашиглагддаггүй
байсан боловч ирээдүйн үйлдлийн систем болох Windows үйлдлийн системийг хийх боломжийг
олгосон. Энэ процессорыг ашиглан 1984 онд IBM-ийнхэн Personal Computer AT компьютерийг
хийжээ. Энэ нь IBM S/360 ба Motorola 68030 процессортой адилхан. Motorola 68030 процессорыг
Мacintosh II компьютерт ашигласан бөгөөд энэ нь 32 битийн процессор байсан. Түүний 32 битийн
data bus, 32 битийн address bus-тай, хурд нь 30MHz байв.

252
ƒ 1985 онд 32 битийн Intel 80386 процессорыг бүтээжээ. Ингэснээр data
bus-ийн өргөнг 2 дахин ихэсгэсэн. Энэ процессор нь 275000 транзистор
ашигласан бөгөөд 80386DX процессор нь 16, 20, 25, 33 MHz гэсэн
хувилбаруудтай. Энэ нь 80286-гийн адил виртуаль санах ой болон
нэгэн зэрэг олон үйлдлийг гүйцэтгэх боломжтой байсан. 1988 онд
худалдаанд зориулан арай хямдхан хувилбарууд болох 16 битийн Intel
386SX-ийг, 1990 онд ISA-г дэмждэг, 855000 транзистор ашигласан Intel
80386SL гэсэн хувилбаруудыг тус тус гаргажээ. Эдгээр процессорууд нь
32 битийн address bus-тай байсан тул санах ойн багтаамжийг 4GB
зураг 6.73. хүртэл ихэсгэх боломжтой болсон. /зураг 6.73/
1989 онд 32 битийн Intel 80486DX процессорыг хийсэн. Энэ нь 1,2 сая
ƒ
транзистор ашигласан, баазын өргөн 2 дахин ихэссэн тул хурд мөн 2
дахин ихсэж 29.6 MIPS (million instructions per second) буюу 33MHz-ийн
хурдтай болсон. Мөн математик үйлдлийг гүйцэтгэхэд зориулагдсан
Floating Point Unit (FPU)-ийг тусгай Math процессороор сольсон. Үүнээс
гадна энэ процессор нь анх удаа 8KB-ийн L1 cache ойг ашиглах болсон
нь үйлдэл гүйцэтгэх хурдыг ихэсгэж өгсөн. Мөн түүнчлэн энэ үеэс эхлэн
Intel-ийнхэн зөөврийн компьютер болох laptop компьютерт зориулан
3v-д ажилладаг энэ процессорын хувилбарыг хийжээ. 1991 онд
гаргасан дээрх процессор Intel 486SX нь math процессоргүй байсан тул
зураг 6.74. арай хямдхан байжээ. /зураг 6.74/
Мөн онд 50MHz-ийн хурдтай Intel 486DX/50 гэсэн хувилбарыг гаргасан бол 1992 онд OverDrive
технологийг ашигласан Intel 486DX2/50 ба Intel 486DX2/66 хувилбаруудыг гаргажээ. Энд "2" нь
процессорын нормаль хурдыг OverDrive технологийг ашиглан 2 дахин ихэсгэсэн болохыг илтгэнэ.
Энэ технологи нь процессорын үндсэн хурд бага байхад үйлдэл гүйцэтгэх хурдыг ихэсгэдэг
технологи. 1992 онд 1,4 сая транзистор ашигласан Intel 486SL процессорыг гаргасан. Ингээд 1994
оноос худалдаанд зориулан SL, SX, DX-ийн янз бүрийн хурдтай хувилбаруудыг гаргаж эхэлсэн бол
1994 оноос OverDrive DX4 технологийг гаргаснаар үндсэн хурдаас 4 дахин их хурдтайгаар
үйлдлийг гүйцэтгэх боломжтой болсон. Ингэснээр процессорын үйлдэл гүйцэтгэх хурдыг 100MHz
хүртэл ихэсгэсэн.
8008 8080 8086 80386 80486
Хийсэн жил 1972 1974 1978 1985 1989
Зааврын тоо 66 111 133 154 235
Address bus-ийн өргөн 14 16 20 32 32
Data bus-ийн өргөн 8 8 16 32 32
Flag-ийн тоо 4 5 9 14 14
Register-ийн тоо 8 8 16 8 8
Санах ойн багтаамж 16KB 64KB 1MB 4GB 4GB
I/O port 24 256 64K 64K 64K
ƒ 1994 оноос AMD AM486 процессоруудаа үйлдвэрлэж эхэлсэн. Тэд AM486DX4/75, AM486DX4/100,
AM486DX4/120 хувилбаруудыг гаргасан. Энэ процессорууд нь дотоод cache ойг анх ашиглажээ.
ƒ 1995 онд AMD-гийхан AM5x86 процессороо хийжээ. Энэ нь Intel-ийн Pentium
процессортой нэг ангилалд хамаарах бөгөөд OverDrive DX4 технологийг
ашиглан үйлдэл гүйцэтгэх хурдыг 133MHz (33MHz⋅4=133MHz) хүртэл ихэсгэсэн
бөгөөд 16KB-ийн cache санах ойтой байсан тул Pentium-75 процессороос хурдан
байжээ. Intel 486 процессорыг хэрэглэгч нар процессороо сайжруулахад дэндүү
үнэтэй байсан тул AMD-гийхэн энэ процессороо хийхдээ 486-ийн motherboard-
ийг ашигласан тул зарим хүмүүс үүнийг Pentium процессорын ангилалд
зураг 6.75.
хамааруулдаггүй. /зураг 6.75/
ƒ 1993 онд Intel-ийнхэн дараагийн шинэ процесороо
үйлдвэрлээд Pentium нэрлэсэн. Учир нь тэр үед
586 гэсэн нэртэй процессорууд нэгэнт гарчихсан
байсан тул Intel-ийнхэн шинээр гаргасан
процессороо өөрөөр нэрлэх болжээ. Оргиналь
Pentium процессор нь 60MHz хурдтай, 32 битийн
address bus, 64 битийн data bus, 3.21 сая
транзистор ашигласан байсан бөгөөд түүний
кодын нэр нь P5 буюу Р54. /зураг 6.76/
зураг 6.76.

253
Pentium ангилалд хамаарах процессорууд нь 60/66/75/90/100/120/133/150/166/200 MHz хурдтай.
Оргиналь 60/66MHz (P54) хурдтай хувилбарууд нь Socket 4 суурийг, 75MHz - 133MHz хурдтай
зарим хувилбарууд (P54C) нь Socket 5 суурийг, бусад бүх хувилбарууд нь Socket 7 суурийг тус тус
ашигладаг. Pentium процессорууд нь тухайн үед ашиглагдаж байсан DOS, Windows 3.1, Unix, OS/2
үйлдлийн системүүдийг дэмждэг. Pentium процессорууд нь superscalar design-ийг ашигласан буюу
нэг циклд 2 зааврыг зэрэг гүйцэтгэж чаддаг байв. Мөн L1 cache санах ойг тус бүр нь 8KB
хэмжээтэй code cache ба data cache гэж 2 салгасан, motherboard дээр L2 гадаад cache ойтой
болсон. Эхний хувилбарууд нь 5v-ийн тэжээл ашигладаг байсан бол 100MHz-ээс эхэлсэн
хувилбарууд нь 3.3v-ийн хүчдлийг ашиглах болсон. Мөн 75MHz хурдтай хувилбараасаа эхлэн
Symmetric Dual Processing технологийг дэмждэг болсноор 2 процессораар нэгэн зэрэг үйлдлийг
гүйцэтгэх боломжтой болсон.

ƒ 1995 онд RISC технологийг ашигласан (өмнөх процессорууд нь


CISC технологийг ашиглаж байсан) Pentium Pro процессорыг
гаргасан. Энэ процессорыг өөрөөр Р6 буюу PPRO гэж нэрлэдэг.
Энэ процессор нь 200MHz хурдтай бөгөөд нэг циклд 3 зааврыг
биелүүлж чаддаг, 8KB-ийн L1 cache (дотоод cache ой),
motherboard дээрх байрлах гадаад cache ой буюу L2 ойг 1MB
хүртэл нэмэгдүүлэх боломжтой, Socket 8 суурьтай байсан. Энэ
процессорыг сүлжээний сервер болон workstation-уудад өргөн
ашигладаг. Мөн 4 процессорыг дэмждэг multiprocessor system-
ийг ашигласан. /зураг 6.77/
зураг 6.77.
ƒ Cyrix корпораци 1992 онд 486SLC, 1995 онд 5х86, мөн онд 6х86
процессороо хийжээ. 6х86 процессор нь PR-120, 133, 150, 166
ба 200MHz хурдтай хувилбаруудтай. 6х86 процессорын кодын
нэр нь M1 бөгөөд FPU ба 16KB-ийн cache ойтой. Ингэснээр 3
хэмжээст буюу 3D хөдөлгөөнт дүрстэй ажиллах, бусад
математик боловсруулалтыг хийхэд тохиромжтой болсон.
/зураг 6.78/
ƒ 1996 онд Cyrix-аас худалдаанд зориулсан үнэ хямдтай MediaGX
процессорыг гаргасан. Энэ нь PCI bus, DRAM memory, SVGA,
зураг 6.78. 128MB хүртлэх EDO RAM-ыг дэмждэг байв.

ƒ AMD-гийн 5х86 процессор нь Pentium ангилалд ордоггүй тул


1996 онд AMD-гийхэн K5 процессороо гаргажээ. Энэ нь Socket
7 суурийг ашигласан бөгөөд 75MHz ба 166MHz хурдтай, 24KB-
ийн L1 cache ойтой, 4.3 сая транзистор ашигласан байв. /зураг
6.79/

зураг 6.79.

254
ƒ 1997 онд Pentium MMX процессорыг гаргасан. Үүний кодын
нэршил нь Р55С. Энэ нь мультмедиаг дэмжих зориулалттай 57
нэмэлт MMX зааврыг ашигласан бөгөөд энэ технологийг
ашигласнаар стандарт программуудын хурд 10-20%-аар
ихэссэн. Pentium MMX процессорын хурд 150-233MHz байсан.
/зураг 6.80/
ƒ 1997 онд AMD ММХ технологийг ашигласан K6 процессорыг
хийсэн бөгөөд үүнийг зарим талаараа Pentium II процессортой
нэг төвшинд хүрсэн гэж үздэг. Гэвч энэ нь Socket 7 суурийг
ашигладаг. ММХ зааврууд болон RISC86 технологийг
ашигласан, 64KB-ийн L1 cache ой (32KB нь өгөгдөлд, 32KB нь
зааварт зориулагдсан), SMM power management-ийг дэмждэг,
166MHz-ээс 300MHz хурдтай. K6, K6-2, K6-2+, K6-III гэсэн
хувилбаруудтай. K6 нь K5-ийн баазын хурдыг 66MHz байсныг
100MHz болгон сайжруулсан хувилбар бол K6-2 нь ММХ шинэ
заавруудыг нэмснээр 3 хэмжээст хөдөлгөөнт дүрстэй
ажиллахад хялбар болсон. Мөн гадаад L2 cache ойг ашиглах
болсон. K6-2 нь K7-гийн өмнөх хувилбар. 128KB-ийн L2 cache
ой, 3D заавруудыг дэмждэг. K6-III нь өмнөх хувилбараас L2
зураг 6.80. cache ойн хэмжээг 256KB болгосноороо ялгаатай. AMD K6-
III/500MHz-ийг Intel Pentium II/450MHz-тэй адилхан гэж үздэг.
Яагаад гэвэл тэдний хурдын үнэлгээний системүүд нь өөр.
ƒ 1997 онд Cyrix-ийнхан 6x86MX процессороо гаргажээ. Үүний
кодын нэршил нь М2. Энэ нь MMX технологийг ашигласан,
64KB cache ойтой, 150MHz-ээс 333MHz хурдтай. Энэ бол Cyrix-
ийн бүтээсэн хамгийн сүүлийн процессор. 1999 онд Via
Technology нь Cyrix-ийн патентыг худалдан авсан.

Intel P5 Intel P6
Intel P5 Intel P54 Intel P55 Intel P6
Overdrive Overdrive
Pentium Pentium II
Нэр Pentium Pentium Pentium MMX Pentium Pro
Overdrive Overdrive
Кодын
P5 PODP5V P54 P55 P6 POPD66X333
нэршил
Үе 5th Generation 5th Generation 5th Generation 5th Generation 6th Generation 6th Generation
75-200 MHz 133-300 MHz
Хурд 60, 66 MHz 120, 133 MHz 125-166 MHz 125-200 MHz 150-200 MHz 333 MHz
(Overdrive) (Overdrive)
Баазын хурд 60, 66 MHz 60, 66 MHz 50, 60, 66 MHz 60, 66 MHz 60, 66 MHz 66 MHz
Address bus 32 Bit 32 Bit 32 Bit 32 Bit 36 Bit 36 Bit
Data bus 64 Bit 64 Bit 64 Bit 64 Bit 64 Bit 64 Bit
Physical
4 GB 4 GB 4 GB 4 GB 64 GB 64 GB
memory
Virtual
4 GB 4 GB 4 GB 4 GB 4 GB 4 GB
memory
Logical
~64 TB ~64 TB ~64 TB ~64 TB ~64 TB ~64 TB
memory
Socket 5
Socket, Slot Socket 4 Socket 4 Socket 7 Socket 8 Socket 8
Socket 7

6.7.2. Intel CPU (1997-)

ƒ 1997 онд Pentium II Klamath процессорыг гаргасан. Энэ нь


Pentium MMX, Pentium Pro процессоруудын давуу талуудыг
нэгтгэн гаргасан шинэ процессор. 32KB-ийн L1 cache ой ба
512KB-ийн L2 cache ойтой. Энэ процессор нь шинээр гарсан
Slot 1 интерфейсыг ашиглан motherboard дээр суудаг.
Оригналь Pentium II процессорын баазын хурд 66MHz бөгөөд
хурд нь 233MHz-ээс 300MHz-ийн хооронд байна.
ƒ 1998 онд Pentium II Deschutes процессорыг гаргажээ.
зураг 6.81. Баазын хурд нь 100MHz, хурд нь 333MHz-ээс 450MHz байна.
/зураг 6.81/

255
ƒ 1998 онд L2 cache ойгүй Pentium II-ийн шинэ хувилбарыг
худалдаанд зориулан гаргаж үүнийгээ Celeron Covington гэж
нэрлэжээ. Энэ нь 2 процессорыг дэмждэггүй, Slot 1
интерфейсыг ашигладаг, хурд нь 233MHz-ээс 433MHz хүртэл
байсан. Харин баазын хурд нь 66MHz байв.
ƒ Дараагийн Celeron 300A Mendocino хувилбарыг 128KB-ийн
L2 cache ойтойгоор гаргасан. Socket 370 суурийг ашигласан
зураг 6.82. бөгөөд хурд 300MHz, баазын хурд нь 100MHz байв. /зураг
6.82/

ƒ 1999 оны 2-р сард 100MHz bus speed-тэй, 450MHz хурдтай


Pentium III Katami процессорыг гаргажээ. Энэ нь ММХ-ийг
сайжруулан 3 хэмжээст хөдөлгөөнт дүрсийн хувьд
сайжруулсан 70 шинэ нэмэлт заавар бүхий SSE зааврууд
нэмэгдсэн. Katmai нь 600MHz хүртэл хурдтай байв. Үүнийг мөн
Pentium II-ийн өргөтгөсөн хувилбарч гэж нэрлэдэг. Энэ нь Slot
1 интерфейсийг ашиглаж байв. /зураг 6.83/
ƒ 2000 оны 4-р сард Pentium III Coppermine шинээр гарсан.
Katmai 512KB-ийн cache ойтой бол Coppermine нь 256KB-ийн
cache ойтой. Мөн Socket 370 суурийг ашигласан болон баазын
хурд нь 133MHz, хурд 500MHz-ээс 1.1GHz болсон.
зураг 6.83.
ƒ 2000 оны 1-р сард Pentium II дээр SSE, SSE2-ийг нэмсэн шинэ процессор гаргасан бөгөөд Celeron
II Coppermine гэж нэрлэжээ. Ингэснээр энэ нь Pentium III-тай нэг төвшинд очиж өгсөн. Pentium
III-аас ялгаатайн PSN-ийг нь хүчингүй болгосон. 533MHz-ээс 1.1GHz хүртэл хурдтай. Баазын хурд
нь 66MHz. 2001 оны эхээр 100MHz bus speed-тэй 800MHz хурдтай хувилбарыг гаргасан.
ƒ Удалгүй Celeron III Tualatin процессорыг гаргасан. Энэ нь 256KB L2 cache ой, 100MHz-ийн
баазын хурдтай байв.
ƒ Дараагийн процессорууд нь 256KB L2 cache ой, 133MHz баазын хурдтай Pentium III Tualatin ба
512KB-ийн L2 cache ойтой Pentium III-S Tualatin.
ƒ 2000 оны 11-р сард Pentium 4 Willamette процессороо
гаргажээ. Сүүлийн үеийн ихэнх дэвшилтэд технологийг
ашигласан. Баазын хурдыг 400MHz болтол ихэсгэсэн. /зураг
6.84/
Hyper Pipelined Technology
Энэ технологийг ашиглан CPU-гийн ерөнхий бүтцийг
өөрчилснөөр түүний хурдыг ихэсгэсэн.
Execution Trace Cache
Execution Trace Cache гэж нэрлэгддэг шинэ дотоод cache
зураг 6.84.
ойг ашиглах болсон. Өөрөөр хэлбэл L1 cache-ийн оронд
trade cache-ийг ашиглах болсон.
Эхний Pentium 4-үүд нь Socket 423 суурийг ашиглаж байсан. Удалгүй 1.9GHz хурдтай, Socket 478
суурийг ашигласан хувилбар уруу шилжсэн.
ƒ 2002 оны эхээр Pentium 4 Northwood гэсэн хувилбарыг гарсан. Athlon XP-гээс L2 cache ой нь
512KB болсноороо давуу болсон. Willamette нь 42 сая транзистор ашиглаж байсан бол Northwood
нь 55 сая транзистор ашиглах болсон. Гэвч хэмжээг 2 дахин багасгаж чадсан. Мөн Rambus RDRAM-
ийг ашигласан. Northwood эхний хувилбарууд нь 2GHz ба 2.2GHz гэсэн хувилбартай. Гэвч удалгүй
3GHz болсон. Түүний баазын хурд нь 533MHz.
Intel P2 Intel P3 Intel P4
Celeron, Celeron A (Low End) Celeron (Low End)
Celeron (Low End)
Pentium II (Mid Range) Pentium 4 (Mid Range)
Нэр Pentium III (Mid Range)
Xeon (High End) Pentium Xeon MP (High End)
Xeon (High End)
Pentium II PE (Mobile) Celeron, Pentium 4M (Mobile)
Klamath (0.28 µm) Katami (0.25 µm PIII)
Deschutes (0.25 µm) Tanner (0.25 µm Xeon) Willamette (0.18 µm)
Кодын Tonga (0.25 µm mobile) Coppermine (0.18 µm Celeron) Foster (0.18 µm Xeon)
нэршил Covington (no L2 Cache) Cascades (0.18 µm Xeon) Northwood (0.13 µm)
Mendocino (128 KB L2 Cache) Geyserville (SpeedStep Tech) Prestonia (0.13 µm Xeon)
Dixon (256 KB L2 Cache) Tualatin (0.13 µm Celeron, PIII)
Үе 6th Generation, MMX 6th Generation, MMX, SSE 7th Generation, MMX, SSE, SSE2
266-533 MHz (Celeron) 450-600B MHz (0.25 µm PIII) 1,3-2,0 GHz (PGA423)
Хурд 233-300 MHz (0.28 µm PII) 600-1133EB MHz (0.18 µm PIII) 1,4-2,0 GHz (µPGA478, 0.18 µm)
333-450 MHz (0.25 µm PII) 1133-1400B MHz (0.13 µm PIII) 1,6-2,8 GHz (µPGA478, 0.13 µm)

256
233-466 MHz (Mobile) 533-1,1E GHz (0.18 µm Celeron) 1,4-2,0 GHz (PGA603, 0.18 µm)
1,2-1,4 GHz (0.13 µm Celeron) 1,8-2,8 GHz (PGA603, 0.13 µm)
400-1333 MHz (mobile Celeron) 1,4-2,2 GHz (µm mobile)
400-1300 MHz (mobile PIII)
500-550 MHz (0.25 µm Xeon)
600-1000EB MHz (0.18 µm Xeon)
66 MHz (0.18 µm Celeron)
100 MHz Quad-Pumped
Баазын хурд 66 or 100 MHz 100 MHz
133 MHz Quad-Pumped (aka B)
133 MHz (aka B)
Address bus 36 Bit 36 Bit 36 Bit
Data bus 64 Bit 64 Bit 64 Bit
Physical
2^36 Bit = 64 GB 2^36 Bit = 64 GB 2^36 Bit = 64 GB
memory
Virtual
2^32 Bit = 4 GB 2^32 Bit = 4 GB 2^32 Bit = 4 GB
memory
Logical
~64 TB ~64 TB ~64 TB
memory
Slot 1 (SEC or SEP Cartridge)
Slot 2 (SEC Cartridge) Slot 1 (SEC or SEC2 Cartridge)
BGA Slot 2 (SEC Cartridge)
PGA423
µPGA Mobile Module Connector 2
Socket, Slot µPGA478
Mini Cartridge Connector BGA2
PGA603
Mobile Module Connector 1 µPGA2
Mobile Module Connector 2 PGA370 (FC-PGA or FC-PGA2)
PGA370 (PPGA)
Pentium
Pentium III Pentium III Pentium III Pentium 4 Pentium 4
CPU Pentium Pro Pentium II
Katami Coppermine Tualatin Willematte Northwood
Он 1995 1997 1999 1999 2001 2000 2002
Хурд 133-200MHz 233-450MHz 450-600MHz 600-1000MHz 1-1.4GHz 1.3-2GHz 1.6-3.1GHz
Front side bus 4x100MHz
60-66MHz 66-100MHz 100-133MHz 100-133MHz 133MHz 4x100MHz
speed 4x133MHz
12KB micro- 12KB micro-
8KB instruction 16KB inst. 16KB inst. 16KB inst. 16KB inst.
L1 cache op instruction op instruction
8KB data 16KB data 16KB data 16KB data 16KB data
8KB data 8KB data
256-1024KB 512KB half 512KB half 256KB full 256-512K full 256KB full 512KB full
L2 cache
on-die cache speed cache speed cache speed on-die speed on-die speed on-die speed on-die
0.35 micron
(Klamath
233-300MHz)
Technology 0.35 micron 0.25 micron 0.18 micron 0.13 micron 0.18 micron 0.13 micron
0.25 micron
(Deschutes
300-450MHz)
L2 256K-28
Транзисторын
5.5 million 7.5 million 9.5 million 28 million L2 512K-46 42 million 55 million
тоо
million
P68
Pro нь on-die (NetBurst)
0.13 micron
L2 кэштэй архитектурыг
гэсэн шинэ
Intel-ийн P6 бол энд L2 ашигласан
технологийг
архитектур кэшийг анхны
ашигласан
ашигласан external L2 кэшийг P6 процессор,
тул овор
анхны болгосон, SSE заавар on-die full архитектуры гэхдээ
Тайлбар хэмжээг
процессор, кэшийн нэмэгдсэн speed болгон н сүүлчийн хуучин 0.18
багасгасан,
сервер болон хэмжээ 2 өөрчилсөн загвар micron
L2-ийн
workstation-д дахин технологийг
хэмжээг 2
зориулагдсан нэмэгдсэн, ашигласан
дахин
MMX заавар тул овор
ихэсгэсэн
нэмэгдсэн хэмжээ их
болсон
Celeron
Celeron Celeron Celeron Celeron Celeron Celeron
Байхгүй
Covington Mendocino Coppermine Tualatin Willematte Northwood
P-II
Deschutes-
ийн доод P-III Tualatin- L2 кэшийн L2 кэшийн
P-II Klamath-
загвар, L2 P-III ий доод хэмжээ 2 хэмжээ 4
ийн доод
кэшийг Coppermine- загвар, front дахин бага дахин бага
Тайлбар - загвар, slot 1
256KB on-die гийн доод side bus буюу 128KB буюу 128KB
дээр L2 кэш
болгож загвар speed нь хэмжээтэйгээ хэмжээтэйгээ
байхгүй
хийсэн, 100MHz рээ ялгаатай рээ ялгаатай
socket 370-
ийг дэмждэг
Он - 1999 1999 2000 2001 2003 2004

257
Хурд - 233-300MHz 300A-533MHz 533-1100MHz 1-1.4GHz 1.7-.18GHz 2-2.8GHz
Front side bus
- 66MHz 66MHz 66-100MHz 66-100MHz 400MHz 400MHz
speed
12KB micro- 12KB micro-
16KB inst. 16KB inst. 16KB inst. 16KB inst.
L1 cache - op instruction op instruction
16KB data 16KB data 16KB data 16KB data
8KB data 8KB data
128KB full 128KB full 128KB full 128KB full 128KB full
L2 cache - Байхгүй
speed on-die speed on-die speed on-die speed on-die speed on-die
Technology - 0.35 micron 0.25 micron 0.18 micron 0.13 micron 0.18 micron 0.13 micron
Транзисторын
- 7.5 million 19 million 28 million 28 million ? ?
тоо
Xeon
CPU Байхгүй P-II Xeon Tanner Cascades Байхгүй Foster ?
Хурд - 450MHz 500MHz 500MHz - ?

6.7.3. AMD CPU

ƒ Intel-ийнхэн Pentium II, Celeron процессороо гаргаж байсан тэр үед AMD микропроцессор
үйлдвэрлэдэг жижигхээн компани байжээ. Гэвч 1998 онд Pentium II-оос хурд ихтэй K6
процессорыг хийжээ. Үүний дараа энэ процессороо маш хурдан сайжруулан 3DNow технологийг
/энэ нь Intel-ийн MMX технологоос 21 заавраар илүү байв/ ашигласан K6-2 процессороо гаргасан.
Гэвч эдгээр нь Socket 7 суурийг ашиглаж байв.
ƒ Intel-ийнхэн Pentium III процессороо гаргахад түүнтэй өрсөлдөх зорилгоор K6-3 процессороо
гаргасан.
ƒ 1999 онд Athlon Pluto буюу K7 процессороо гаргасан. Энэ
ангиллын процессороо одоог хүртэл үйлдвэрлэж байгаа.
Оригналь Athlon нь 500MHz хурдтай. Мөн 700MHz хурдтай
хувилбартай. Сайжруулсан FPU, дахин өртгөтгөсөн 3Dnow
технологи, шинээр гарсан Slot A интерфейсыг ашигладаг. Учир
нь тухайн үед Intel-ийнхэн Slot 1 суурийнхаа патентийг өгөөгүй
учраас түүнтэй адилхан хэлбэртэй Slot A суурийг шинээр
гаргажээ. Digital Equipment Corporation-ийн Alpha EV6
технологийг ашигласан шинэ систем баазыг ашигласан. Энэ
зураг 6.85. баазын bandwidth нь 1.6 GB/s, хурд нь 200MHz. (зураг 6.85)
ƒ Дараагийн процессор нь Athlon Orion буюу K75. 1000MHz
хурдтай, Slot A суурийг ашигладаг, 512KB-ийн L2 cache ойтой.
ƒ 2000 оны 6-р сард DDR RAM-ийг дэмждэг Athlon Thunderbird процессороо гаргасан. Энэ нь
Socket A (буюу Socket 462) суурийг ашигладаг, 256KB-ийн L2 cache ойтой. В ба С гэсэн 2
хувилбартай. В хувилбар нь 100MHz-ийн баазын хурдтай бол С нь 133MHz-ийн баазын хурдтай.
Хурд нь 700MHz-ээс 1400MHz.
ƒ 2001 оны 5-р сард mobile-д зориулан Athlon 4 Palomino процессороо гаргасан. Энэ нь Intel-ийн
гаргасан SSE заавруудыг өөртөө нэмсэн.
ƒ 2001 оны 10-р сард Athlon Palomino процессорын персональ компьютеруудад зориулсан
хувилбарыг гаргасан бөгөөд үүнийг Athlon XP eXtreme Performance гэнэ. Athlon XP нь хурдын
өөр системийг ашиглах болсон. Жишээлбэл Athlon XP 1600+ нь 1.6GHz хурдтай биш бөгөөд
ойролцоогоор 1.4GHz-тэй адилхан, гэвч Athlon XP 1800+ нь Pentium 4 2GHz-тэй адилхан болж
чадсан. Athlon XP 2100+ нь хамгийн сүүлийн Palomino. XP 1700+-гаас XP 2400+ нь 133MHz-ийн
баазын хурдтай, XP 2600+-гаас XP 2800+ нь 166MHz-ийн баазын хурдтай.
ƒ 2002 оны 6-р сард Athlon Thoroughbred дээр суурилагдсан Athlon 1500+ процессорыг хийсэн.
Ингэснээр Athlon-ий процессорууд Palomino-гоос Thoroughbred уруу шилжсэн. 1500+ ба 2100+
гэсэн хувилбаруудтай.
ƒ 2003 оны 1-р сард Athlon Barton-ийг хийсэн. Энэ нь 2500+ 3000+ гэсэн хувилбаруудтай.
ƒ 2000 оны 4-р сард Duron Spitfire процессор гарсан. Энэ нь
Athlon Thunderbird дээр суурьлагдсан. 128KB битийн L1 cache
ой, 64KB L2 cache ойтой. Мөн EV6 bus-ийг ашиглана. Bus speed
100MHz. /зураг 6.86/
ƒ 2001 оны 8-р сард Duron Morgan гарсан. Эхлээд 950MHz
хурдтай байсан бөгөөд удалгүй 1GHz хурдтай болсон. Athlon
Palomino дээр суурьлагдсан. 256KB-ийн L2 cache ойтой, бусад
талаараа Palomino-той адилхан.
зураг 6.86. ƒ Дээрх 2 процессорыг AMD-гийхэн Intel-ийн Celeron ангиллын
процессоруудын эсрэг гаргасан юм.

258
AMD K5 AMD K6 AMD K7
K6
Athlon
Нэр K5 K6-2, K6-2+
Duron
K6-III, K6-III+
Argon
K7 (0.25 µm)
K75 (0.18 µm), Pluto, Orion
HA (Nx686)
TB-Thunderbird (0.18 µm)
K6 (0.30 µm)
SSA5 (PR75, PR90, PR100) SF-Spitfire (0.18 µm)
Кодын нэршил Little Foot (0.25 µm)
5k86 (PR120, PR133, PR166) PM-Palomino (0.18 µm)
K6-3D, Chomper
MG-Morgan (0.18 µm)
K6-3D+, Sharptooth
XP-eXtreme Performance
TH-Thoroughbred (0.13 µm)
BT-Barton (0.13 µm)
Үе 5th Generation 6th Generation, MMX 7th Generation, MMX, SSE
500-700 MHz (0.25 µm)
550-1000 MHz (0.18 µm)
SF: 600-950 MHz
TB: 650-1400 MHz
PR75: 75/50 MHz 166-300 MHz (K6) MG-mobile: 800-1200 MHz
PR90: 90/60 MHz 233-550 MHz (K6-2) MG: 1000-1300 MHz
PR100: 100/66 MHz 400-450 MHz (K6-III) PM-mobile: 850-1200 MHz
Хурд
PR120: 90/60 MHz 350-450 MHz (mobile K6-III) PM-mobile: 1300-1400 MHz
PR133: 100/66 MHz 450-550 MHz (K6-2+) TH-mobile: 1466-1800 MHz
PR166: 116.7/66 MHz 450-550 MHz (K6-III+) PM-MP: 1000-1733 MHz (P2100)
PM-XP: 1333-1733 MHz (P2100)
TH-XP: 1800-2250 MHz (P2800)
TH-MP: 1667-2133 MHz (P2600)
BT-XP: 2167 MHz (P3000)
100 MHz Double-Data Rate
133 MHz DDR (aka B)
Баазын хурд 50, 60, or 66 MHz 66 or 100 MHz
166 MHz DDR (aka C)
DEC Alpha EV6 Protocol
Address bus 32 Bit 32 Bit 32 Bit
Data bus 64 Bit 64 Bit 64 Bit
Physical
2^36 Bit = 64 GB 2^36 Bit = 64 GB 2^36 Bit = 64 GB
memory
Virtual memory 2^32 Bit = 4 GB 2^32 Bit = 4 GB 2^32 Bit = 4 GB
Logical memory ~64 TB ~64 TB ~64 TB
Socket 5 (up to PR133) Socket 7 (PGA) Slot A
Socket, Slot
Socket 7 (up to PR166) Proprietary (BGA or OBGA) Socket A
AMD Athlon
Athlon K7 Athlon K7 Athlon XP Athlon XP Athlon XP
CPU
Pluto Orion Thunderbird Palomino Thoughbred Barton
Он 1999-2000 2000 2001 2002 2003
500-1000MHz 650-1400MHz 1333(1500+)- 1466(1700+)- 2500+-3000+MHz
Хурд
1670(2100+)MHz 2100(2800+)MHz
Front side bus 2x100MHz 2x100/133MHz 2x133MHz 2x133/166MHz 2x166MHz
speed
64KB instruction 64KB instruction 64KB instruction 64KB instruction 64KB instruction
L1 cache
64KB data 64KB data 64KB data 64KB data 64KB data
L2 cache 512KB external 256KB on-die cache 256KB on-die cache 256KB on-die cache 512KB on-die cache
0.25 micron (Pluto) 0.18 micron 0.18 micron 0.13 micron 0.13 micron
Technology
0.18 micron (Orion)
Транзисторын тоо 22 million 37 million 37.5 million 37.5 million 54.3 million
K7 архитектуртай Intel P-III Intel-ийн SSE Зөвхөн 0.13 L2 кэшийн хэмжээг
анхны процессор, Coppermine-тэй заавруудыг micron-той 2 дахин ихэсгэсэн
Тайлбар Intel P-II Katami- төсөөтэй ашигласан болсноороо өмнөх
тэй төсөөтэй хувилбараас
ялгаатай
Ингээд AMD-гийн Athlon, Intel-ийн Pentium процессоруудыг хооронд нь харьцуулан харья. (зураг
6.87)

259
зураг 6.87.

6.7.4. 64 битийн процессорууд

64 битийн процессорууд болох Intel Itanium, AMD Hammer процессоруудын талаар товчхон авч
үзье.
Intel Itanium IA 64 нь Intel-ийн гаргасан анхны 64 битийн процессор. 64 битийн өргөнтэй 128
үндсэн регистер, 82 битийн өргөнтэй 128 floating point регистер, 64 predicate register, 8 branch
register, мөн x86-гийн бусад регистерүүдтэй. Instruction set нь буюу зааврын урт нь 41 бит. Санах
ойгоос CPU-гийн L1 instruction cache уруу зааврыг 128 битээр дамжуулна. Үүний 123 битийг 41
битийн урттай 3 заавар + 5 хоосон бит тус тус эзэлнэ. Зааврыг биелүүлэх дамжлага нь 10 буюу
pipeline stage нь 10. Үйлдлийг боловсруулдаг 9 нэгжтэй. Эдгээрийн 2 нь floating point unit (FPU),
integer unit (ALU), 2 load/store unit, 3 branch unit. Intel-ийн 64 битийн Itanium Merced, Itanium 2
McKinley, Madison Deerfield гэсэн 3 процессорыг одоогийн байдлаар гаргаад байна.
AMD Hammer нь AMD-гийн гаргасан анхны 64 битийн процессор. 64 битийн ердөө 16 регистертэй,
үйлдлийг гүйцэтгэдэг 9 нэгжтэй. Эдгээр нь 3 integer unit (ALU), 3 address generation unit (AGU), 3
floating point unit (FPU).

6.8.1. Микропроцессорын бүтэц

Микропроцессорын бүтцийг авч үзвэл түүнийг дараах хэсгүүдээс тогтдог гэж үзэж болно. /зураг
6.88/
ƒ Арифметик логик хэсэг /нэгж/ буюу Arithmetic and Logic Unit (ALU) - өгөгдлийг боловсруулах
арифметик (нэмэх, хасах, үржүүлэх, хуваах), логик (ба, буюу, үгүйсгэл г.м), жиших
үйлдлүүдийг гүйцэтгэнэ.
ƒ Регистер буюу Register – заавар, өгөгдөл болон үр дүнг түр хадгалахад зориулагдсан санах ой
ƒ Хяналтын хэсэг /нэгж/ буюу Control Unit (CU) – үйлдлийг хянах хэсэг
ƒ Системийн холболт буюу CPU Interconnection (system bus) – дээрх хэсгүүдийг хооронд нь
холбож өгөх зориулалттай бааз.

260
зураг 6.88.
Микропроцессорыг цаашид зүгээр л процессор гэж нэрлэе. Энэхүү процессорын тусламжтайгаар
гүйцэтгэдэг үйлдлүүдийн тухай ярихаас өмнө instruction буюу заавар гэдэг зүйлийг ойлгох
хэрэгтэй. Өөрөөр хэлбэл хэдийгээр микропроцессор бүх үйлдлийг гүйцэтгэдэг боловч чухам яаж
энэ үйлдлүүдийг гүйцэтгэдэг вэ гэдгийг мэдэхийн тулд заавар гэдгийг ойлгох хэрэгтэй.
Процессорын гүйцэтгэж байгаа бүхий л үйлдлүүд; тоог нэмэх, хасах, үржүүлэх, хуваах, өгөгдлийг
зөөх, шилжүүлэх болон логик үйлдлүүд гээд бүхий л үйлдлүүд нь тодорхой тусгайлан бэлтгэсэн
заавруудын дагуу явагддаг. Эдгээр зааврууд нь санах ойд байрлах бөгөөд нэг заавар нэг л
үйлдлийг хэрхэн гүйцэтгэхийг тодорхойлсон байдаг ба үйлдэл бүрийг энэхүү заавруудын дагуу
гүйцэтгэдэг. Ингэхээр компьютер дээр хийгдэх үйлдлийг дэс дараалсан заавруудыг биелүүлэх
үйлдэл гэж ойлгож болно.
Нэг зааврыг биелүүлэхэд дараах дамжлагыг дамжина. Өөрөөр хэлбэл процессор 1 үйлдлийг
гүйцэтгэхийн тулд дараах 4 шатыг дамждаг байна. /зураг 6.89/ Үүнд:
ƒ Тухайн үйлдлийг гүйцэтгэхэд хэрэгтэй зааврыг санах ойгоос олж авах бөгөөд үүнийг
процессорын хяналтын хэсэг буюу CU гүйцэтгэнэ.
ƒ Дараагийн алхамд тухайн зааврыг биелүүлэхэд ашиглагдах өгөгдлийг санах ойгоос ALU уруу
дамжуулна.
ƒ ALU нь CU-ээс ирсэн зааврын дагуу өгөгдлийг боловсруулна.
ƒ ALU-гийн боловсруулсан үр дүнг санах ойд эсвэл регистерд хадгална.

зураг 6.89.
Жишээлбэл санах ойд байгаа хоёр тоог хооронд нь нэмээд үр дүнг нь эргээд санах ойд хадгалах
үйлдэл хэрхэн явагдахыг үзье. /зураг 6.90/
ƒ Санах ойгоос хэрэгтэй зааврыг CU олж татаж авна.
ƒ Тухайн хоёр тоог санах ойгоос ALU уруу зөөнө.
ƒ CU дээрх зааврыг 2 тоог хооронд нь нэмээд үр дүнг санах ойд хадгалагдахад ашиглагдах
заавар мөн болохыг тогтоогоод зааврыг ALU уруу илгээнэ.
ƒ ALU нь CU-гээс ирсэн зааврын дагуу 2 тоог хооронд нэмээд үр дүнг эргүүлэн санах ой уруу
илгээнэ.

261
зураг 6.90.
Иймээс дээр хийгдэх үйлдлийг дараах хоёр шатлалаар явагдаж байна гэж үзэж болно.
ƒ Тухайн үйлдлийг хийхэд хэрэгтэй зааврыг олж авах
ƒ Зааврыг биелүүлэх
Үүнийг зааврын цикл буюу instruction cycle гэж нэрлэх бөгөөд компьютер дээр хийгдэх үйлдлүүд нь
дэс дараалсан заавруудыг биелүүлэх явдал гэж ойлгож болно. Харин процессор нь 1 секундэд
хэдэн сая цикл хийх чадвартай байна. Үүгээр процессорын хурд тодорхойлогддог.
Зааврууд нь санах ойд хадгалаастай байх бөгөөд энэхүү заавруудаас тухайн үйлдлийг гүйцэтгэхэд
хэрэгтэй зааврыг олж авах үйлдлийг fetch cycle (зааврыг олж авах цикл), зааврыг биелүүлэх
үйлдлийг executе cycle (гүйцэтгэх буюу биелүүлэх цикл) гэнэ. Өөрөөр хэлбэл процессорын хийх
бүхий л үйлдлүүд нь тодорхой заавруудын дагуу явагддаг гэж үзэж болно. /зураг 6.91/

зураг 6.91.

6.8.2. Арифметик логик нэгж

ƒ Энэ хэсэг нь санах ойгоос авсан зааврын дагуу; арифметик үйлдлүүд; нэмэх, хасах,
үржүүлэх, хуваах, сөрөг тоог олох; логик үйлдлүүд; ба, буюу, үгүйсгэл г.м; жиших; хоёр
тоог хооронд нь адилхан эсэхийг жиших, их багыг нь тогтоох г.м үйлдлүүдийг гүйцэтгэнэ.
ƒ Компьютерийн системийн бүх элементүүд (хяналтын хэсэг, регистер, санах ой,
оролт/гаралт г.м) нь ALU уруу өгөгдлийг оруулах бөгөөд ALU нь санах ойгоос авсан
зааврын дагуу үйлдлийг гүйцэтгэсний дараа үр дүнг регистер эсвэл санах ойд хадгална.
ƒ ALU уруу уншигдах өгөгдөл нь регистерт хадгалагдаж байх эдгээр регистерүүдийг үндсэн
регистер (general purpose register) гэнэ.
ƒ ALU нь үйлдлийг гүйцэтгэхийн өмнө өгөгдлийг accumulator гэж нэрлэдэг регистерт бичнэ.
Эдгээр регистер нь CPU-д байрлана. Өөрөөр хэлбэл Accumulator нь үйлдлийг гүйцэтгэхийн
өмнө өгөгдлийг түр хадгалахад зориулагдсан санах ой.
ƒ Мөн ALU нь үйлдлийг гүйцэтгэсний дараа үр дүнг бичихдээ set flag-ийг хамтад нь гаргана.
Энэ flag нь үр дүн регистерт хадгалах боломжтой өгөгдлийн уртаас хэтэрсэн эсэхийг
тогтооно. Жишээлбэл энэ утга 1 гэж байвал ALU-гаас гарсан үр дүн регистерийн уртаас

262
хэтэрсэн болохыг илтгэнэ. Энэ утга нь мөн CPU-д байрлах тодорхой регистерт
хадгалагдана. (flag-ийн тухай хожим дэлгэрэнгүй үзнэ)
ƒ Мөн хяналтын нэгж нь ALU-гийн гүйцэтгэх үйлдэл болон ALU уруу өгөгдлийг ачаалах явцыг
хянана.
ƒ ALU нь дээрх бүх үйлдлийг 2-тын тооллын системд гүйцэтгэнэ.

6.8.3. 1 битийн ALU

2 оролтонд ирсэн 1 битүүдийн хувьд AND, OR, XOR, ADD гэсэн 4 үйлдлийг гүйцэтгэдэг ALU-г авч
үзье /зураг 6.92/

зураг 6.92.
Decoder
Decoder нь n оролттой, 2n гаралттай оролтонд өгсөн импульсуудаас аль нэгийг сонгож
гаралтанд гаргах зориулалттай логик байгууламж. Жишээ нь 2 оролттой 4 гаралттай decoder-
ийг авч үзье. /зураг 6.93/

зураг 6.93.
X0 X1 Y0 Y1 Y2 Y3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
Жишээ нь ALU нь AND, OR, XOR, ADD гэсэн 4 үйлдлийг гүйцэтгэдэг байвал decoder 4 гаралттай,
2 оролттой байна. Эндээс ALU дээрх 4 үйлдлийн алиныг гүйцэтгэхийг тогтоож өгнө. Өөрөөр
хэлбэл decoder 2 оролтонд 2-уланд нь 0 байвал AND үйлдлийг, 1 байвал ADD үйлдлийг
гүйцэтгэнэ г.м-ээр.
X0 X1 Y0 Y1 Y2 Y3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
control
AND OR XOR ADD
input
Multiplexer
Multiplexer нь n оролтоос сонгож нэг гаралтанд гаргах зориулалттай логик байгууламж. Өөрөөр
хэлбэл энэ тохиолдолд mutliplexer нь switch-ийн үүргийг гүйцэтгэнэ. Decoder-оос ирсэн
импульсын тусламжтайгаар ALU нь AND, OR, XOR, ADD 4 үйлдлийн алийг нь гүйцэтгэхийг
multiplexer-ийн тусламжтайгаар тогтоож өгнө. /зураг 6.94/ Иймээс үүнийг энгийн 2 оролттой

263
/input ба control гэсэн 2 оролттой/ AND логик элемент /gate/-ийг ашиглан хийж болно. AND
логик элементийн control оролтонд 1 байхад гаралтанд input оролттой адилхан байна.
input control output
0 0 0
1 0 0
0 1 0
1 1 1

зураг 6.94.
Arithmetic and logic function
Arithmetic and logic function нь AND, OR, XOR, ADD гэсэн 4 үйлдлийг гүйцэтгэнэ. /зураг 6.95/

зураг 6.95.
1 битийн ALU
Дээрх зүйлдүүдийг тооцон AND, OR, XOR, ADD гэсэн 4 үйлдлийг гүйцэтгэх чадвартай 1 битийн
ALU-г хийвэл дараах байдалтай байна. /зураг 6.96/

264
зураг 6.96.

6.8.4. 4 битийн ALU

Өмнөх жишээтэй адилаар AND, OR, XOR, ADD гэсэн 4 үйлдлийг гүйцэтгэдэг 2 оролттой (А3, А2, А1,
А0 ба В3, В2, В1, В0) 1 гаралттай (R3, R2, R1, R0) 4 битийн ALU -г дараах байдлаар хийж болно.
/зураг 6.97/

зураг 6.97.
Энд хяналтын оролт (X2, X1, X0) нь тухайн ALU хэчнээн үйлдэл гүйцэтгэх чадвартайгаас хамаарна.
Жишээлбэл 4 үйлдэл гүйцэтгэж байвал хяналтын оролт нь 2 (Х1, Х0), 8 үйлдэл гүйцэтгэж байвал 3
(Х2, Х1, Х0) г.м байна.
Ингээд 4 битийн ALU-г 6.98-р зурагт үзүүлсний дагуу тэмдэглэнэ.

265
зураг 6.98.
Жишээ 6.4.
AND, OR, XOR, ADD гэсэн 4 үйлдэл гүйцэтгэдэг 4 битийн ALU-ийн оролтонд дараах утгуудыг өгвөл
ямар үр дүн гарахыг тогтоо.

X0 0 0 1 1
X1 0 1 0 1
A 1001 1001 1001 1001
B 0011 0011 0011 0011
R ? ? ? ?
4 битийн ALU-г дараах байдлаар хэлхээнд холбож хасах үйлдлийг гүйцэтгэнэ.
Ингэхдээ A-B=A+B’+1 байдгийг ашиглав. (зураг 6.99)

зураг 6.99.
Нэмэх үйлдлийн үед орон хэтрэхийг overflow гэдэг. Өөрөөр хэлбэл 4 битийн хувьд нэмэх үйлдлийн
үед нийлбэр 15-аас (1111) хэтэрвэл overflow болно. Үүнийг танихдаа N bit ALU-гийн хувьд
overflow=carry in(N) XOR carry out(N) байна. (зураг 6.100)

зураг 6.100.
Мөн ALU-гийн үр дүнг тэг байгаа эсэхийг тогтоохдоо дараах хэлхээг ашиглана. (зураг 6.101)

266
зураг 6.101.
Ингээд 4 битийн zero болон overflow-г тусгай гаралтаар тогтоогдог (flag) ALU-г таних тэмдгийг
6.102-р зурагт үзүүлэв.

зураг 6.102.
4 битийн ALU-г хийхдээ 1 битийн ALU-г хооронд нь шууд холбож хийвэл бүх үр дүнг нэгэн зэрэг
боловсруулахгүй. Өөрөөр хэлбэл эхний үр дүнг гарсны дараа дараагийнх, түүний дараа
дараагийнх г.м-ээр боловсруулагдах тул ингэж хийсэн ALU-г ripple буюу асинхрон холболт гэж
нэрлэнэ. (зураг 6.103)

зураг 6.103.
4 битийн 2 ALU хооронд нь дараах байдлаар холбож 8 битийн ALU-г хийж болно. (зураг 6.104)

267
зураг 6.104.
Гэвч энэ нь мөн ripple холболтоор холбогдож байгаа тул бүх үр дүн зэрэг боловсруулагдахгүй.
Харин 4 битийн 3 ALU-г хооронд нь дараах байдлаар холбож параллель холболтоой 8 битийн ALU-
г гаргаж авч болно. (зураг 6.105)

зураг 6.105.
4 битийн параллель ALU-г 1 битийн 4 ALU-г дараах байдлаар холбон гаргаж авч болно. (зураг
6.106)
Энд:
gi=Ai*Bi
pi=Ai+Bi
C1=g0+p0Cin
C2=g1+p1g0+p1p0Cin
C3=g2+p2g1+p2p1g0+p2p1p0Cin

268
зураг 6.106.

6.8.5. 32 битийн ALU

8 битийн 4 ALU-г хооронд нь сериал холбож 32 битийн ALU-г гаргаж авч болно. (зураг 6.107)

зураг 6.107.
Мөн 8 битийн 4 ALU-г хооронд нь параллелиар холбож дараах байдлаар 32 битийн ALU-г хийж
болно. (зураг 6.108)
Энд:
P0=p3p2p1p0
P1=p7p6p5p4
P2=p11p10p9p8
P3=p15p14p13p12
G0=g3+p3g2+p3p2g1+p3p2p1g0
G1=g7+p7g6+p7p6g5+p7p6p5g4
G2=g11+p11g10+p11p10g9+p11p10p9g8
G3=g15+p15g14+p15p14g13+p15p14p13g12
C1=G0+P0Cin
C2=G1+P1G0+P1P0Cin
C3=G2+P2G1+P2P1G0+P2P1P0Cin

269
зураг 6.108.

6.9.1. Instruction Set Architecture (ISA)

Компьютерийг зааврууд болон техник хэсэг гэсэн 2 үндсэн хэсгээс тогтдог гэж үзэж болно. Өөрөөр
хэлбэл computer = ISA (Instruction Set Architecture) + CHD (Computer Hardware Design) гэж үзэж
болно.
ISA-г компьютерийн техник болон программ хангамжийг холбогч интерфейс гэж ойлгож болох
бөгөөд ISA-д дараах зүйлүүдийг хамааруулан ойлгоно.
ƒ Регистер болон санах ойн бүтэц, зохион байгуулалт
ƒ Өгөгдлийн төрөл, өгөгдлийн бүтэц
ƒ Зааврууд
ƒ Зааврын формат
ƒ Санах ойн хаяглалтын хэлбэрүүд
PowerPC, Motorola 68000, SPARC, MIPS, Intel 80x86, VAX г.м ISA байдаг.
Санах ой уруу хандах боломж Үйлдлийн максимум тоо ISA
0 3 SPARC, MIPS, PowerPC
1 2 Intel 80x86, Motorola 68000
3 3 VAX
Жишээ нь VAX-ийн хувьд нэг заавраар санах ой уруу хамгийн ихдээ 3 удаа хандах боломжтой.
Өөрөөр хэлбэл add (R1),(R2),(R3) буюу mem(R1)Åmem(R2)+mem(R3) гэсэн үйлдлийг нэг
заавраар биелүүлэх боломжтой. Харин энэ үйлдлийг MIPS-ийн хувьд гүйцэтгэвэл:
lw R1, (R10) R1ÅR1+mem(R10)
lw R2, (R11) R2ÅR2+mem(R11)
add R3, R1, R2 R3ÅR1+R2
sw R3, (R9) mem(R9)ÅR3
1990-ээд оны сүүлээр Alpha өөрийнхөө процессорыг Motorola68000-гаас PowerPC архитектур уруу
шилжүүлснээс хамааран ISA-гаа Макентош уруу шилжүүлсэн. Харин Intel-ийнхэн 1978 онд 8086-д
зориулан ISA-гаа гаргаснаас хойш өөрчлөөгүй байгаа.
ISA-г дараах байдлаар ангилна. (зураг 6.109)
ƒ Accumulator (1960 оноос өмнө ашиглагдаж байсан)
1 address add A acc Å acc + mem(A)
1+x address addx A acc Å acc + mem(A+x)
ƒ Stack (1960-80 онуудад өргөн ашиглагдаж байсан)
0 address add tos Å tos + next
ƒ Memory-memory (1970-80 онуудад ашиглагдаж байсан)
2 address add A B mem(A) Å mem(A) + mem(B)
3 address add A B C mem(A) Å mem(B) + mem(C)
ƒ Register-memory (1970-аад оноос одоог хүртэл)
2 address add R1, A R1 Å R1 + mem(A)

270
load R1, A R1 Å mem(A)
ƒ Load/Store (1960 оноос хойш)
3 address add R1,R2,R3 R1 Å R2 + R3
load R1,R2 R1 Å mem(R2)
store R1,R2 mem(R1) Å R2

зураг 6.109.
Жишээ нь C=A+B үйлдлийг хэрхэн гүйцэтгэхийг үзье.
Accumulator Stack Memory-memory Register-memory Load/Store
Load A Push A Add C,A,B Load R1, A Load R1, A
Add B Push B Add R1, B Load R2, B
Store C Add Store C, R1 Add R3, R1, R2
Pop C Store C, R3
Accumulator архитектур
Ашиглах заавар нь:
add A, sub A, mul A, div A
load A, store A
Жишээ: AB-(A+BC) (зураг 6.110)
load B
mul C
add A
store D
load A
mul B
sub D

зураг 6.110.
Stack архитектур
Ашиглах заавар:
add, sub, mul, div
push A, pop A
Жишээ: AB-(A+BC) (зураг 6.111)
push A
push B
mul
push A
push C
push B
mul
add
sub

зураг 6.111.
Memory-memory архитектур
Ашиглах заавар:
(3 үйлдэл) add A,B,C sub A,B,C mul A,B,C
(2 үйлдэл) add A,B sub A,B mul A,B

271
Жишээ: AB-(A+BC)
3 үйлдэл 2 үйлдэл
(зураг 6.112) (зураг 6.113)
mul D,A,B move D,A
mul E,B,C mul D,B
add E,A,E move E,C
sub E,D,E mul E,B
add E,A
sub E,D

зураг 6.112.

зураг 6.113.
Register-memory архитектур
Ашиглах заавар:
add R1,A sub R1,A mul R1,A
load R1,A store R1,A
Жишээ: AB-(A+BC) (зураг 6.114)
load R1,C
mul R1,C
add R1,A
store R1,D
load R2,A
mul R2,B
sub R2,D

зураг 6.114.
Store/load архитектур
Ашиглах заавар:
add R1,R2,R3 sub R1,R2,R3 mul R1,R2,R3
load R1,A store R1,A move R1,R2
Жишээ: AB-(A+BC) (зураг 6.115)
load R1,A
load R2,B
load R3,C
mul R7,R2,R3
add R8,R1,R7
mul R9,R1,R2
sub R10,R9,R8

зураг 6.115.
ISA-гийн зааврууд нь дараах үйлдлүүдийг гүйцэтгэнэ.
Data movement
load (from memory)
store (to memory)
move (memory to memory)
move (register to register)
input (from I/O device)
output (to I/O device)
push (to stack)
pop (from stack)
Arithmetic integer and floating point (add subtract multiply divide)
Logical not and or
Shift shift left/right, rotate left/right
Control branch (conditional), jump (unconditional)
System system call, trap, return
String move, compare
Multimedia - 2D, 3D? e.g., Intel MMX and Sun VIS
Санах ойд томоохон хэмжээний өгөгдлийг байруулах үндсэн 2 арга байдаг. Өөрөөр хэлбэл
өгөгдлийн хэмжээ 1 үгнээс хэтэрсэн тохиолдолд түүнийг санах ойд байрлуулах үндсэн 2 арга
байдаг. Үүнд:

272
ƒ Big Indian: өгөгдлийг санах ойд байруулахдаа хамгийн эхний байтаас нь эхлүүлэн
байрлуулдаг. Жишээ нь IBM 360/370, Motorola 68k, MIPS, Spars, HP PA
ƒ Little Indian: өгөгдлийг санах ойд байрлуулахдаа хамгийн сүүлийн байтаас нь эхлэн
байрлуулдаг. Жишээ нь Intel 80x86, DEC Vax, DEC Alpha (Windows NT)
Өөрөөр хэлбэл 4567 гэсэн тоог санах ойд бичихдээ Little Indian-аар бол 4567, Big Indian-аар 7654
гэсэн дарааллаар байрлуулна. (зураг 6.116)

зураг 6.116.
Санах ойн хаяглалтын дараах үндсэн хэлбэрүүд байдаг.
Register ADD R4, R3 R4ÅR4+R3
Immediate ADD R4,#3 R4ÅR4+3
Displacement ADD R4, 100(R1) R4ÅR4+MEMORY(100+R1)
Register Deferred ADD R4,(R1) R4ÅR4+MEMORY(R1)
Direct ADD R4,(1001) R4ÅR4+MEMORY(1001)
Indexed ADD R4,(R1+R2) R4ÅR4+MEMORY(R1+R2)
Memory indirect ADD R4,@R1 R4ÅR4+MEMORY(MEMORY(R1))
Auto increment ADD R4,(R1)+ R4ÅR4+MEMORY(R1), R1ÅR1+d
Auto discrement ADD R4,-(R1) R1ÅR1-d, R4ÅR4+MEMORY(R1)
Scaled ADD R4,100(R1)[R2] R4ÅR4+MEMORY(100+R1+d*R2)

6.9.2. Процессорын дотоод бүтэц

Микропроцессор нь дотроо нэлээд олон логик элементүүдийг агуулна. Жишээ нь Pentium 4 (IA-32
architecture) микропроцессор нь дотроо дараах элементүүдийг агуулна. Үүнд:
ƒ 8 ш 32 битийн үндсэн регистер
ƒ 6 ш 16 битийн сегмент регистер
ƒ 8 ш 80 битийн FP регистер
ƒ 8 ш 64 битийн ММХ регистер
ƒ 8 ш 128 битийн ХММ регистер (SSE, SSE2)
ƒ 3 ш 16 битийн control, status, flag регистер
ƒ ALU (FPU, integer, logical г.м үйлдлүүдийг гүйцэтгэнэ)
Микропроцессорын үндсэн 2 төрөл байдаг.
CISC (Complex Instruction Set Computing)
ƒ Заавар нь нийлмэл бүтэцтэй, тухайн процессорын дизайнаас хамаарна
ƒ Зааврыг 1 болон түүнээс бага циклд гүйцэтгэнэ
ƒ IBM-ийн гаргасан бүр PC компьютерууд
RISC (Reduced Instruction Set Computing)
ƒ Заавар нь энгийн бүтэцтэй, бүгд адилхан хэмжээтэй
ƒ Зааврыг 1 болон түүнээс их циклд гүйцэтгэнэ
ƒ store/load архитектурыг ашиглана
ƒ SUN, HP, Motorola PPC, SGI компьютерууд
80-аад оны үед RISC CPU нь on-chip cache-тэй, CISC CPU нь on-chip cache-гүй байсан бол одоо энэ
2 төрлийн процессор нь 2-ул on-chip cache-тэй болсон.
CISC RISC Superscalar
IBM
IBM VAX Motorola MIPS
Intel 80486 RS/System Intel 80960
370/168 11/780 88000 R4000
6000
Үйлдвэрлэсэн он 1973 1978 1989 1988 1991 1990 1989
Зааврын тоо 208 303 235 51 94 184 62
Зааврын хэмжээ (байтаар) 2-6 2-57 1-11 4 32 4 4, 8
Хаяглалтын хэлбэр 4 22 11 3 1 2 11
Үндсэн регистрийн тоо 16 16 8 32 32 32 23-256
Кэшийн хэмжээ (KByte) 64 64 8 16 128 32-64 0.5

273
6.9.3. MIPS 3000

MIPS 3000 нь хамгийн энгийн бүтэцтэй RISC төрлийн процессор. Иймээс энэ процессорыг сонгон
авч үзье.
MIPS 3000 нь:
ƒ Бүх заавар нь адилхан 32 битийн өргөнтэй
ƒ Үндсэн 3 төрлийн зааврын хэлбэртэй (R, I, J төрлийн)
ƒ Load/store архитектурыг ашигласан
ƒ 32 битийн 32 үндсэн регистер, PC, Hi, Lo гэсэн тусгай регистерүүдийг хэрэглэнэ. Үндсэн
регистерүүдийг $0-$31 тэмдэглэх бөгөөд дараах байдлаар нэрлэнэ.
Регистерийн
Нэр Тайлбар
дугаар
0 zero тэг регистер бөгөөд үргэлж тэг гэсэн утга авна
1 at нөөц регистер
2-3 v0-v1 үр дүнг хадгалахад
4-7 а0-а3 аргумент
8-15 t0-t7 тэмп хувьсагчийн
16-23 s0-s8 С хувьсагчийн
24-25 t8-t9 тэмп хувьсагчийн
26-27 k0-k1 кернелд зориулагдсан
28 gp global pointer
29 sp stack pointer
30 fp frame pointer
31 ra return address
Ингээд MIPS 3000 процессорын дотоод бүтцийг блок схемээр дүрсэлбэл: /зураг 6.117/

зураг 6.117.
Энд: ALU – arithmetic logic unit
Арифметик болон логик үйлдлүүдийг гүйцэтгэнэ.
SP – stack pointer
PC – program counter
Дараагийн зааврын санах ой дахь хаягийг тогтооно.
R1 … Rn – general purpose registers
Үндсэн регистерүүд нь заавар болон өгөгдлийг түр хадгалах зориулалтай
процессорын дотоод санах ой.
AC – accumulator
ALU-д үйлдэл гүйцэтгэхээс өмнө өгөгдлийг түр хадгална.
shifter – shift/rotate
ALU-гаас гарах үр дүнг shift ба rotate байдлаар stack-д хадгална. /зураг 6.118/

зураг 6.118.

274
flag
Энэ нь арифметикийн overflow, тоог тэгд хуваах зэрэг мэдээллүүдийг агуулна.

6.9.4. ISA MIPS 3000

Arithmetic
Add add $1,$2,$3 $1Å$2+$3
Add unsigned addu $1,$2,$3 $1Å$2+$3
Add immediate addi $1,$2,100 $1Å$2+100
Add immediate unsigned addiu $1,$2,100 $1Å$2+100
Subtract sub $1,$2,$3 $1Å$2-$3
Subtract unsigned subu $1,$2,$3 $1Å$2-$3
Multiply mult $2,$3 Hi, Lo=$2*$3
Multiply unsigned multu $2,$3 Hi, Lo=$2*$3
Divide div $2,$3 Hi=ноогдвор($2÷$3) Lo=хүртвэр($2÷$3)
Divide unsigned divu $2,$3 Hi=ноогдвор($2÷$3) Lo=хүртвэр($2÷$3)
Move from Hi mfhi $1 $1=Hi
Move to Hi mthi $1 Hi=$1
Move from Lo mflo $1 $1=Lo
Move to Lo mtlo $1 Lo=$1
Set on less than slt $1,$2,$3 If $2<$3 $1=1 else $1=0
Set on less than immediate slti $1,$2,10 If $2<10 $1=1 else $1=0
Logical
And and $1,$2,$3 $1=$2 and $3
And immediate and $1,$2,10 $1=$2 and $3
Or or $1,$2,$3 $1=$2 or $3
Or immediate ori $1,$2,10 $1=$2 or $3
Xor xor $1,$2,$3 $1=$2 xor $3
Xor immediate xori $1,$2,10 $1=$2 xor $3
Nor nor $1,$2,$3 $1=$2 nor $3
Shift left logical sll $1,$2,10 $1=$2<<10 shift left by constant
Shift right logical srl $1,$2,10 $1=$2>>10 shift right by constant
Shift right arith. sra $1,$2,10 $1=$2>>10 shift right (sign extend)
Shift left log. variable sllv $1,$2,$3 $1=$2<<$3 shift left by variable
Shift right log. variable srlv $1,$2,$3 $1=$2>>$3 shift right by variable
Shift right arith. variable srav $1,$2,$3 $1=$2>>$3 shift right arith. by variable
Data transfer
Store word sw 100($4),$3 Mem(100+$4)Å$3
Store half word sh 100($4),$3 Mem(100+$4)Å$3
Store byte sb 100($4),$3 Mem(100+$4)Å$3
Load word lw $1,100($2) $1ÅMem(100+$2)
Load half word lh $1,100($2) $1ÅMem(100+$2)
Load byte lb $1,100($2) $1ÅMem(100+$2)
Control
Branch on equal beq $1,$2,100 If $1==$2 goto pc+4+100
Branch on not equal bne $1,$2,100 If $1!=$2 goto pc+4+100
Branch on less than or
blez $1,100 If $1<=0 goto pc+4+100
equal to zero
Branch on greater than zero bgtz $1,100 If $1>0 goto pc+4+100
Branch on less than zero bltz $1,100 If $1<0 goto pc+4+100
Branch on less than zero
bltzal $1,100 If $1<0 goto pc+4+100 and link (into R31)
and link
Branch on greater than or
bgezal $1,100 If $1>=0 goto pc+4+100 and link (into R31)
equal to zero and link
Jump j 1000 Goto 1000
Jump register jr $31 Goto $31
Jump and link jal 1000 $31=pc+4 goto 1000

6.9.5. MIPS 3000-ийн зааврын формат

MIPS 3000 нь 32 битийн R, J, K гэсэн 3 төрлийн заавартай (зураг 6.119)

275
зураг 6.119.
op – operation code, 6 бит, тухайн заавраар гүйцэтгэх үйлдлийг тодорхойлно.
rs, rt – register source, тус бүр нь 5 бит
rd – register destination, 5 бит
shamt – shift amount, 5 бит
funct – function code, 6 бит, op талбарт тодорхойлогдсон үйлдлийн өөр хувилбар
16 bit address – address offset/immediate value
26 bit address – jump зааврыг ашиглах үеийн target address
Жишээ 6.5.
R төрлийн заавар:
add addu rd, rs, rt rdÅrs+rt
sub subu rd, rs, rt rdÅrs-rt
set on less than slt rd,rs,rt if rs<rt then rd=1 else rd=0
I төрлийн заавар:
load lw rt, rs, imm rtÅrs+imm
store sw rt, rs, imm mem(rs+imm)Årt
branch beq rs, rt, offset if rs==rt then go to offset
branch bue rs, rt, offset if rs!=rt then go to offset
J төрлийн заавар:
jump j target go to target

6.9.6. MIPS 3000-ийн хаяглалтын хэлбэрүүд

R төрлийн зааврын хувьд шууд регистерт л хандана (register direct). Жишээ нь add $1, $2, $3
(зураг 6.120)

зураг 6.120.
I төрлийн зааврын хувьд регистерт утга олгоно (immediate). Жишээ нь add $1, $2, 100 (зураг
6.121)

зураг 6.121.
I төрлийн зааврын хувьд санах ой уруу displacement хэлбэрээр хандана (base index). Жишээ нь lw
$1,100($2) (зураг 6.122)

зураг 6.122.
Мөн түүнчлэн I төрлийн заавар нь РС-г ашиглана дараах хэлбэрээр санах ой уруу хандана (PC
relative). Жишээ нь beq $1,$2,100 (зураг 6.123)

зураг 6.123.
J төрлийн зааврын хувьд шууд санах уруу хандана. Жишээ нь j 1000. (зураг 6.124)

276
зураг 6.124.

6.9.7. MIPS 3000-ийн үйлдэл гүйцэтгэх процесс

Жишээ 6.6.
ADD R0, R1 үйлдлийг гүйцэтгэе. Энэ нь R0=R0+R1 үйлдэлтэй адилхан. Өөрөөр хэлбэл R0
регистерд байгаа өгөгдөл дээр R1-д байгаа өгөгдлийг нэмээд үр дүнг нь R0-д хадгалах.
1. R0-д байгаа өгөгдлийг accumulator уруу шилжүүлнэ. /зураг 6.125/

зураг 6.125.
2. R1-д байгаа өгөгдлийг ALU уруу шилжүүлнэ. /зураг 6.126/

зураг 6.126.
3. R0=R0+R1 буюу R0, R1-ийг хооронд нь нэмээд R0-д аваачиж хадгална. /зураг 6.127/

зураг 6.127.
4. Гэхдээ энэ тохиолдолд алдаа гарах боломжтой. Учир нь data bus-аар дамжин R0=R0+R1 дахин
оролтонд орсноор алдаа гарах боломжтой болно. /зураг 6.128/

277
зураг 6.128.
5. Иймээс дээрх алдаанаас гарахын тулд temp регистерийг ашигладаг. /зураг 6.129/

зураг 6.129.

6.9.8. MIPS 3000 procedure

MIPS 3000-ийн procedure буюу дэд программыг үүсгэхдээ swap гэдэг түлхүүр үгийг ашиглана.
Жишээ болгон нэг дэд программыг бичье.
swap:
addi $sp,$sp,-24 6 регистерээс тогтох stack-ийг байгуулна
sw $31,20($sp) save return address
sw $15,16($sp) save register on stack
sw $16,12($sp) save register on stack
sw $17,8($sp) save register on stack
sw $18,4($sp) save register on stack
sw $19,0($sp) save register on stack
дэд программаа энд бичнэ
lw $19,0($sp) restored registers from stack
lw $18,4($sp) restored registers from stack
lw $17,8($sp) restored registers from stack
lw $16,12($sp) restored registers from stack
lw $15,16($sp) restored registers from stack
lw $31,20($sp) restore return address
addi $sp,$sp,24 restore top of stack
jr $31 return to place that called swap
Харин дэд программыг дуудан ажиллуулахдаа ердөө jal swap ($31=PC+4 goto swap) гэсэн
түлхүүр үгийг ашиглана.

6.10.1. Pipeline

Зааврыг гүйцэтгэх үйлдэл нь дараах үндсэн алхамуудаас тогтно. Үүнийг үйлдлийг гүйцэтгэх
дамжлага гэж цаашид нэрлэе. MIPS 3000 процессорын хувьд үйлдлийг гүйцэтгэх үндсэн 5
дамжлага байна. (зураг 6.130) Үүнд:
ƒ Instruction fetch – санах ойгоос зааврыг олж авна.
ƒ Instruction decode – opcode-ийн тусламжтайгаар тухайн заавраар гүйцэтгэх үйлдлийг
тогтооно.

278
ƒ Execute – ALU-гийн тусламжтайгаар үйлдлийг гүйцэтгэнэ.
ƒ Memory access – үр дүнг санах ойд хадгална.
ƒ Register write – үр дүнг регистерт хуулна.

зураг 6.130.
Жишээ 6.7.
r3=r1+r2 гэсэн үйлдлийг гүйцэтгэе. Өөрөөр хэлбэл add $r3, $r2, $r1 гэсэн заавар хэрхэн биелэхийг
үзье. (зураг 6.131)
ƒ Энэ зааврыг олж авна. Энэ үед PC 4-өөр нэмэгдэнэ.
ƒ Энэ заавраар add үйлдлийг гүйцэтгэхийг тогтооно. r1, r2 регистерүүдийг тогтоож, түүн дэх
өгөгдлийг уншина.
ƒ Өмнөх тогтоосон зааврын дагуу r1, r2-ийг хооронд нь нэмнэ.
ƒ Алгасна. Учир нь үр дүнг санах ойд бичихгүй.
ƒ Үр дүнг r3 регистерт бичнэ.

зураг 6.131.
Жишээ 6.8.
r1 регистерт байгаа утгыг 17-той жишиж үр дүнг r3 регистерт бичье. Өөрөөр slti $r3, $r1, 17 заавар
хэрхэн биелэхийг үзье. (зураг 6.132)
ƒ Зааврыг олж авна. Энэ үед PC 4-өөр нэмэгдэнэ.
ƒ Заавар slti үйлдэл болохыг тогтоож, r1 регистерийг уншина.
ƒ r1 регистерийн утгыг 17-той жишнэ.
ƒ Алгасна. Учир нь үр дүнг санах ойд хадгалахгүй.
ƒ Үр дүнг r3 регистерт бичнэ.

зураг 6.132.
Жишээ 6.9.
r1 регистерийн утган дээр 17-г нэмж гарсан үр дүнг r3 регистерийн утгатай тэнцүү хаягаар санах
ойд хадгална. Өөрөөр sw $r3, 17($r1) заавар хэрхэн биелэхийг үзье. (зураг 6.133)
ƒ Зааврыг олж авна. Энэ үед PC 4-өөр нэмэгдэнэ.
ƒ Зааврыг sw үйлдэл болохыг тогтоож, r1, r3 регистерийн утгыг уншина.
ƒ r1 регистерийн утган дээр 17-г нэмнэ.
ƒ Үр дүнг r3 регистерийн утгатай тэнцүү хаягаар санах ойд хадгална.
ƒ Алгасна. Учир нь үр дүнг регистерт бичих шаардлагагүй.

279
зураг 6.133.
Жишээ 6.10.
r1 регистерийн утган дээр 17-г нэмж гарсан үр дүнтэй тэнцүү хаягтай санах ойн үүрэнд байгаа
өгөгдлийг r3-д бичье. Өөрөөр lw $r3, 17($r1) заавар хэрхэн биелэхийг үзье. (зураг 6.134)
ƒ Зааврыг олж авна. Энэ үед PC 4-өөр нэмэгдэнэ.
ƒ Зааврыг lw үйлдэл болохыг тогтоож, r1 регистерийн утгыг уншина.
ƒ r1 регистерийн утган дээр 17-г нэмнэ.
ƒ Үр дүнтэй тэнцүү хаягтай санах ойн үүрэнд байгаа өгөгдлийг уншина.
ƒ Санах ойгоос уншсан өгөгдлийг r3 регситерт хадгална.

зураг 6.134.
Эндээс үзвэл зааврыг биелүүлэх явц нь 5 дамжлагыг дамждаг байна. Энд 1-рт зааврыг олж авах,
2-рт заавраар гүйцэтгэх үйлдлийг тогтоох, 3-рт зааврыг биелүүлэх, 4-рт үр дүнг санах ойд бичих,
5-рт үр дүнг регистерт хуулах гэсэн. Эдгээр дамжлага бүрд зарцуулагдах хугацааг тооцвол зааврыг
биелүүлэхэд зарцуулагдах нийт хугацаа нь:
нийт хугацаа = IF + Dec + Exec + Mem + Reg буюу
2000ps = 500ps + 250ps + 500ps + 500ps + 250ps болно.
Компьютерийн хүчин чадал нь программыг биелүүлэхэд зарцуулагдах хугацааг тодорхойлсон
дараах хэмжигдэхүүнээр тодорхойлдог:

Энд Р нь программыг биелүүлэхэд хэдэн заавар ашиглаж байгаагаас хамаарна. Харин дараагийн
хэмжигдэхүүн нь зааврыг биелүүлэхэд хэдэн цикл хэрэгтэй байгааг харуулсан хэмжигдэхүүн.
Сүүлийн хэмжигдэхүүн нь нэг циклийн үргэлжлэх хугацаа бөгөөд үүнийг зааврыг биелүүлж байгаа
дамжлагуудын зарцуулах хугацаанаас хамгийн ихийг сонгож авдаг. Иймээс дэс дараалсан
заавруудыг биелүүлэхэд дараах хугацааг зарцуулах болно. (зураг 6.135)

зураг 6.135.
Эхний зааврыг биелүүлэх явц нь 5 дамжлагыг дамжих учраас эхний дамжлагын дараа тухайн
дамжлага сул чөлөөтэй болох учраас дараагийн зааврыг эхлүүлэх боломжтой болно. Үүнийг
pipeline гэнэ. Өөрөөр хэлбэл эхний зааврыг биелүүлэх явцад сул чөлөөтэй болсон дамжлагуудыг
ашиглан дараагийн зааврыг биелүүлэх боломжтой. Нэг зааврыг биелүүлэхэд 5 цикл шаардлагатай
байсан бол pipeline-ийг ашигласнаар нэг циклд нэг зааврыг биелүүлэх боломжтой болно. (зураг
6.136)

280
зураг 6.136.
Жишээ 6.11.
add $s0, $t0, $t1
sub $12, $s0, $t3
заавруудыг хэрхэн биелүүлэхийг үзье. Эхний зааврын үр дүнд гарч ирэх $s0 регистерийн утгыг
дараагийн зааварт ашиглах тул дараагийн заавар биелүүлэх явц тодорхой хугацаагаар хойшилно.
(зураг 6.137)

зураг 6.137.
Гэхдээ эхний заавар биелээд дуустал заавал хүлээх шаардлагагүй. Учир нь эхний зааврын 3 дахь
дамжлагаас гарах үр дүн л дараагийн зааварт хэрэгтэй тул дараагийн заавар эхэлж байж болно.
Мөн эхний зааврыг биелэж дуустал хүлээлгүйгээр шууд нэмэх үйлдлийг гүйцэтгэсний дараа үр
дүнг дараагийн зааварт шууд авч ашиглана. (зураг 6.138)

зураг 6.138.
Жишээ 6.12.
lw $s0, 20($t1)
sub $12, $s0, $t3
заавруудыг хэрхэн биелүүлэхийг үзье. Энэ жишээнд санах ойн үүрнээс $s0 регистерт өгөгдлийг
дамжуулсны дараа буюу 4 дэх дамжлагаас энэ регистерийн утгыг ашиглаж болох тул 1 циклд
дараагийн заавар биелэхгүй түр саатуулагдана. (зураг 6.139)

зураг 6.139.

281
6.10.2. Hazard-ийн эффект

4 дэх ба 1 дэх дамжлагын үед 2-улаа нэгэн зэрэг санах ойг ашиглах асуудал гарч байна. Иймээс
энэ асуудлыг шийдэхийн тулд L1 кэшийг L1 data cache ба L1 instruction cache гэж салгаж өгсөн.
(зураг 6.140)

зураг 6.140.
Мөн 2 дахь ба 5 дахь дамжлагад нэг циклд нэгэн зэрэг регистер рүү хандах шаардлага гарч байна.
Гэсэн хэдий ч регистер рүү хандах хугацаа маш бага. Өөрөөр хэлбэл циклийн 1 үеийн үргэлжлэх
хугацааг ALU-гийн үйлдлийг гүйцэтгэх хугацаагаар сонгож авдаг. Учир нь дээрх 5 дамжлагыг
биелүүлэх үед ALU-гийн үйлдэл гүйцэтгэх хугацаа нь хамгийн их байдаг. Харин регистер рүү
хандах хугацаа нь энэ хугацаанаас 2 дахин бага байдаг. Иймээс 1 циклийн эхний хагаст регистер
рүү өгөгдлийг бичиж, дараагийн хагаст регистер байгаа өгөгдлийг уншдаг. Иймээс нэг циклд
багтаж регистерт өгөгдөл бичих, унших гэсэн 2 үйлдлийг зэрэг хийдэг. (зураг 6.141)

зураг 6.141.
MIPS 3000-ийн үйлдэл гүйцэтгэх дамжлага бүрд зарцуулах хугацааг илүү тодорхой авч үзье. (зураг
6.142)

зураг 6.142.
Энд:
IF
ϕ1 – TLB-г ашиглан зааврын виртуаль хаягийг физик хаяг уруу хөврүүлнэ.
ϕ2 – Зааврыг I-кэш хуулна.
Dec
ϕ1 – I-кэшд хуулсан зааврыг зөв хуулагдсан эсэхийг шалгана.

282
ϕ2 – Регистерт байгаа зааврыг уншина; зааврыг branch эсэхийг шалгаж, хэрэв branch бол
очих хаягийг тогтооно.
Exec
ϕ1 – ALU үйлдлийг гүйцэтгэж эхэлнэ; хэрэв branch бол нөхцөлийг шалгана.
ϕ2 – ALU үйлдлийг дуусгана; хэрэв load/store бол хаягийг тогтооно.
Mem
ϕ1 – D-кэш рүү өгөгдлийг хуулна.
ϕ2 – D-кэшд хуулсан өгөгдлийг зөв хуулагдсан эсэхийг шалгана.
Reg
ϕ1 – Регистер рүү үр дүнг бичнэ.

6.10.3. Superscalar

Хялбарыг бодож энгийн заавар нь зааврыг барьж авах (fetch), зааврыг тайлах (decode), зааврыг
биелүүлэх (execute), үр дүнг хадгалах (write) гэсэн 4 дамжлагыг дамждаг гэж үзье. (зураг 6.143)

зураг 6.143.
Тэгвэл энгийн процессоруудын хувьд заавруудыг биелүүлэх процесс нь 6.144-р зурагт үзүүлсний
дагуу явагдах бөгөөд энэ процессоруудыг scalar pipelined processor гэнэ.

зураг 6.144.
Хэрэв дамжлага бүрд зарцуулах хугцааг бүгдийг нь бүрэн ашиглавал зааврын эхний дамжлагыг
дуусахаас өмнө дараагийн зааврыг эхлэх боломжтой. Ийм процессорыг superpipelined processor
гэнэ. (зураг 6.145)

зураг 6.145.
Superscalar процессорууд нь үйлдлийг нэгэн зэрэг гүйцэтгэдэг. Жишээ нь Pentium, PowerPC,
UltraSparc, AMD K5+, HP PA7100-, DEC г.м. (зураг 6.146)

зураг 6.146.
Superscalar процессор нь олон үйлдлийг нэгэн зэрэг гүйцэтгэх боломжтой байдаг. Жишээлбэл
integer ба FP архиметик, store/load гэсэн 3 үйлдлийг зэрэг гүйцэтгэдэг superscalar процессорыг
6.147-р зурагт үзүүлэв.

283
зураг 6.147.
Үүний тулд Instruction кэш-ээс 1-ээс олон тооны зааврыг decode buffer-д хуулна. Дараа нь эдгээр
зааврыг 1-ээс олон decode-ийн тусламжтайгаар тайлна. Жишээ нь P4 процессор 3 decoder-ийг
ашиглана. Эдгээр тайлсан заавруудыг dispatch buffer-д хадгална. Дараа нь dispatch-ийн
тусламжтайгаар эдгээр заавруудыг биелүүлэхэд ашиглахад execute-ийг сонгоно. Энд жишээ нь
бүхэл болон Floating Point архиметикийн үйлдэл, нөхцөлт ба нөхцөлт бус branch, санах ой уруу
өгөгдлийг бичих болон унших зэрэг үйлдлүүд байж болно. Ингээд заавруудыг нэгэн зэрэг эдгээр
execute-уудын тусламжтайгаар гүйцэтгэх бөгөөд гарсан үр дүнг reorder buffer-д хадгалж эргүүлэн
заавруудыг биелүүлэх дарааллыг тогтооно. Энэ дарааллын дагуу үр дүнг store buffer-д хадгална.
Иймээс эдгээр буферүүд нь stack зохион байгуулалттай байна. (зураг 6.148)

зураг 6.148.
Сүүлийн жилүүдэд superscalar болон superpipelined технологиудыг хамтран ашигласан superscalar-
superpipelined технологийг ашиглах болсон. (зураг 6.149)

зураг 6.149.

284
6.10.4. Superscalar pipeline

MIPS 10000, Intel IA32, PowerPC зэрэг superscalar процессоруудын хувьд pipeline нь дараах үндсэн
хэсгүүдээс тогтно. Үүнд:
Fetch Зааврыг олж авна. TLB-ийн тусламжтайгаар зааврын логик хаягийг физик хаяг уруу
хөврүүлнэ.
Prefetch Зааврыг instruction buffer-д хуулж дарааллыг нь тогтооно.
Decode Заавруудыг тайлна. Өөрөөр заавар бүрийн гүйцэтгэх үйлдлийг тогтооно.
Rename Заавруудыг дахин дугаарлана.
Issue Заавруудын үйлдлийг гүйцэтгэх нэгжийг сонгоно.
Execute Хэд хэдэн замаар заавруудыг зэрэг биелүүлнэ.
Complete Үйлдлийг гүйцэтгэх нэгж бүрээс гарсан үр дүнг цуглуулна.
Reorder Үр дүнгийн дарааллыг тогтооно.
Retire Үр дүнг регистерт хуулна.
Write back Үр дүнг санах ойд бичнэ.

6.11.1. Intel-ийн товч түүхээс

1971 анхны 4004 микропроцессорыг хийсэн.


1975 8 битийн 8080 процессор. Үүнийг Altair компьютерт ашигласан. Энэ нь accumulator
архитектуртай байв.
1978 16 битийн 8086 процессор.
1980 IBM 8088 процессорыг ашигласан IBM PC компьютерыг үйлдвэрлэсэн.
1980 8087 анхны FP coprocessor, 60 FP заавар, 80 битийн FP регистер, stack архитектурыг
ашигласан.
1982 24 битийн address bus-тай 80286 процессор.
1985 32 битийн 80386 процессор.
1989 80486 процессор, энэ нь өөртөө math процессорыг агуулсан, кэш ойтой, заавруудын
дамжлагын систем болох pipeline-ийг ашигласан.
1992 Pentium процессор, энэ нь 1 циклд олон зааврыг биелүүлэх чадвартай superscalar
процессор болсон.
1995 Pentium Pro процессор, анхны P6 архитектурыг ашигласан.
1997 Pentium II процессор, мультимедиа болон графиктай ажиллахад зориулагдсан 57 шинэ
заавраас тогтох MMX архитектур, 1 заавраар олон үйлдлийг гүйцэтгэх боломжтой SIMD
технологийг ашигласан. Энэ технологиор 8 битийн 8 өгөгдөл, 16 битийн 4 өгөгдөл, 32
битийн 2 өгөгдлийн хувьд үйлдлийг нэгэн зэрэг гүйцэтгэх боломжтой.
1999 Pentium III процессор, SIMD-ийг сайжруулсан ISSE технологийг ашигласан, 1 заавраар
32 битийн FP 4 өгөгдлийн хувьд үйлдлийг зэрэг гүйцэтгэх боломжтой.
2002 Itanium IA 64 процессор, 64 битийн RISC процессор

6.11.2. 8086-ийн зааврууд

Intel 8086 процессоруудын хувьд дараах үндсэн заавруудыг ашиглана.


data movement (move, push, pop)
archimetic logic (and, or, not, nor, nand, xor, test, shift)
integer archimetic (add, subtract, multiply, divide, absolute value, square)
FP archimetic (add, subtract, multiply, divide)
string (move and compare)
control (branch, jump, call, return)
transcendental (sin, cos, log)

6.11.3. MMX технологи

График болон мультмедиа-тай ажиллахад зориулагдсан дараах нэмэлт зааврууд байдаг.


ƒ Intel MMX
ƒ Intel Internet Streaming SIMD Extension (ISSE)
ƒ AMD’s 3D Now
ƒ Sun’s Visual Instruction Set
ƒ Motorola & IBM’s AltiVec

285
Intel MMX нь 64 битийн өргөнтэй packed гэж нэрлэгддэг дараах 4 төрлийн бүтэцтэй өгөгдлийг
ашиглана. (зураг 6.150)

зураг 6.150.

6.11.4. MMX заавар

SIMD (Single Instruction to work on Multiply pieces of Data)


Энэ нь нэг заавраар олон үйлдлийг зэрэг гүйцэтгэнэ. Үүнээс өмнөх технологи нь нэг заавраар нэг л
үйлдлийг гүйцэтгэдэг байв.
Жишээ нь packed add word (зураг 6.151)

зураг 6.151.
Multiply-add үйлдэл (зураг 6.152)

зураг 6.152.
Vector dot үйлдэл (зураг 6.153)

зураг 6.153.
Зарим MMX заавруудаас авч үзвэл:
padd (b, w, d) packed add
psub (b, w, d) packed subtract
pcmpe (b, w, d) packed compare equal
pmull (w) packed word multiply low
pmulh (w) packed word multiply high
pmadd (w, d) packed word multiply-add
psrl (w, d, q) packed shift right logical
pand, por, pxor packed logical operation
punpck, ppck packed unpack, pack зааврууд нь энгийн өгөгдлийг packed
өгөгдөл болгох, packed өгөгдлийг эргүүлэн энгийн өгөгдөл
болгоно.
Intel SSE нь МMX дээр 70 заавар нэмсэн ба шинээр 128 битийн регистерийг ашиглах болсон,
ингэснээр параллель FP үйлдлийг (4 ш 32 битийн өгөгдөл дээр FP үйлдлийг зэрэг гүйцэтгэх
болсон) гүйцэтгэх боломжтой болсон.

286
6.11.5. Pentium

Intel-ийн анхны superscalar процессор болох Pentium нь бүхэл тоон архиметикийн 2 үйлдлийг зэрэг
гүйцэтгэдэг бөгөөд үүнийг P5 архитектур гэнэ. (зураг 6.154)

зураг 6.154.
Р5 архитектурын pipeline нь дараах нь 5 дамжлагаас тогтно.
Prefetch зааврыг Instruction кэшээс татан авч instruction buffer-д хадгална.
Decode 1 зааврын opcode-ийн тусламжтайгаар заавраар гүйцэтгэх үйлдлийг тогтооно.
Decode 2 заавар маань хэрэв branch бол шаарлагатай хаягийг тогтооно.
Execute үйлдлийг гүйцэтгэнэ
Write back үр дүнг регистерт бичнэ
Intel-ийн дараагийн архитектур нь P6 архитектур (Pentium Pro – Pentium III). (зураг 6.155)

зураг 6.155.
Р6 архитектуртай процессоруудын pipeline нь 10 дамжлагаас тогтно.
1-2 fetch зааврыг I-кэшээс олж авна
3-5 decode зааврыг тайлна. Энд 3 decode-ийг ашиглана.
6 rename өмнөх дамжлагаас ирсэн заавруудыг цуглуулан авна.
7-8 reorder заавруудыг дэс дараагаар нь байрлуулна.
9 dispatch заавруудыг үйлдлийн гүйцэтгэх ямар нэгжийг ашиглах болохыг тогтооно. Энд
үйлдлийг гүйцэтгэх 5 нэгж байна. Эдгээрийн алийг ашиглахыг тогтооно.
10 execute үйлдлийг гүйцэтгэнэ.
Хамгийн сүүлийн архитектур болох NetBurst архитектуртай Pentium IV процессорын ерөнхий
бүтцийн схемийг 6.156-р зурагт үзүүлэв.

зураг 6.156.
NetBurst архитектуртай процессоруудын pipeline нь 20 дамжлагаас тогтно.

287
1-2 fetch РС-гээс ирсэн дараагийн зааврын хаягийг TLB-гийн тусламжтайгаар
физик хаяг уруу хөврүүлнэ
3-4 fetch зааврыг олж авна
5 drive заавруудыг цуглуулна
6 allocate заавруудыг тайлна
7-8 rename заавруудын нэрийг нь өөрчилнө
9 queue дарааллыг тогтооно
10-12 schedule үйлдлийг гүйцэтгэх хуваарийг гаргах
13-14 dispatch заавруудыг үйлдэл гүйцэтгэх нэгжээр нь салаална
15-16 register file заавруудыг нөөц буферт хуулах
17 execute үйлдлийг гүйцэтгэнэ, энд 2 integer, 1 load, 1 store, 1 FP үйлдлийг
гүйцэтгэнэ
18 flag флагийг хийх
19 branch check branch-ийг шалгах
20 drive үр дүнг цуглууна

6.12.1. MIPS 4000

Зааврыг биелүүлэх дамжлага 8 болон өөрчлөгдсөн. Энд:


IF – зааврыг олж авна, PC шинэчлэгдэнэ
IS – зааврыг instruction cache-д хуулна
RF – instruction decode буюу заавраар гүйцэтгэх үйлдлийг тогтооно
EX – үйлдлийг гүйцэтгэнэ
DF – өгөгдлийг олж авна
DS – өгөгдлийг data cache-д хуулна
TC – tag check буюу өгөгдөл data cache-д зөв хуулагдсан эсэхийг шалгана
WB – үр дүнг регистер болон санах ойд хадгална

6.12.2. PowerPC

32 битийн анхны процессор болох PowerPC 601-ийн бүтцийн схемийг 6.157-р зурагт үзүүлэв.

зураг 6.157.
PowerPC 601-ийн pipeline нь дараах хэлбэртэй байна.
Branch instruction
Fetch 4 хүртлэх зааврыг зэрэг олж авна, дараагийн зааврын хаягийг тогтооно
Decode заавраар гүйцэтгэх үйлдлийг тогтооно, хэрэв branch бол үйлдлийг
гүйцэтгэнэ
Integer instruction
Fetch 4 хүртлэх зааврыг зэрэг олж авна, дараагийн зааврын хаягийг тогтооно
Decode заавраар гүйцэтгэх үйлдлийг тогтооно
Execute зааврыг гүйцэтгэнэ
Writeback үр дүнг регистерт хуулна
Load/store instruction
Fetch 4 хүртлэх зааврыг зэрэг олж авна, дараагийн зааврын хаягийг тогтооно
Decode заавраар гүйцэтгэх үйлдлийг тогтооно
Add gen санах ойн хаягийг тогтооно
Cache кэш рүү өгөгдлийг бичих болон уншина
Writeback кэш дэх өгөгдлийг регистерт хуулна

288
64 битийн PowerPC 620 процессорын бүтцийн схемийг 6.158-р зурагт үзүүлэв.

зураг 6.158.

6.12.3. Zilog 80 CPU

Zilog 80 буюу Z80 процессор нь практикт нэлээд өргөн хэрэглэгддэг, үнэ хямдтай процессор. /зураг
6.159/
ƒ Data bus нь 8 битийн өргөнтэй
ƒ Address bus нь 16 битийн өргөнтэй. Иймээс санах ойн 216=65535 үүртэй.
ƒ Control bus
RD – санах ой болон бусад төхөөрөмжөөс унших
WD – санах ой болон бусад төхөөрөмж рүү бичих
MREQ – санах ойгоос болон санах ой уруу өгөгдлийг дамжуулах
IORQ – бусад төхөөрөмжүүдээс болон бусад төхөөрөмжүүд рүү өгөгдлийг дамжуулах

зураг 6.159.
Z80 процессорын бүтэц /зураг 6.160/

289
зураг 6.160.
Z80 процессор ашигласан энгийн систем /зураг 6.161/

зураг 6.161.
Z80-ийн заавар нь 1, 2, 3 байтын урттай байж болно. 1 байтын урттай заавар нь санах ойн 1
үүрийг, 2 байтын урттай заавар нь санах ойн 2 үүрийг, 3 байтын урттай заавар нь санах ойн 3
үүрийг тус тус эзэлнэ.
Жишээ нь LD заавар
LD H, E E регистерт байгаа өгөгдлийг H регистер рүү шилжүүлэх (1 байт)
LD A, 10 А регистерд 10 гэсэн утга өгөх
LD A, (1000) А регистерд байгаа өгөгдлийг 1000 гэсэн хаягтай санах ойн үүрэнд
хуулах (3 байт)
Жишээ 6.7.
Санах ойн 1861-р үүрэнд байгаа өгөгдлийг 1860-р үүрэнд хуулаад, 1862-р үүрэнд 1 гэсэн өгөгдлийг
хуулья. /зураг 6.162/

зураг 6.162.

High level Assembler


language language
/зураг 6.163/
int a, b, c; LD A, (1861)
a=b LD (1860), A
c=1 LD A, 1
LD (1862), A

290
зураг 6.163.

6.12.4. Z80-ийн арифметик ба логик үйлдлүүд

Арифметик үйлдлүүд (integer)


ƒ Нэмэх, хасах
ƒ 1-р нэмэгдүүлэх, 1-р хорогдуулах
ƒ Үржүүлэх, хуваах (Z80-д байхгүй)
Арифметик үйлдлүүд (floating point)
ƒ Z80-д байхгүй
Логик үйлдлүүд
ƒ and, or, not …
Жишээ 6.8. Нэмэх үйлдлийг гүйцэтгэх
Санах ойн 1861-р үүрэнд байгаа өгөгдөлд 1-ийг нэмээд үр дүнг нь 1861-р үүрэнд хадгалья.
High level Assembler
language language
/зураг 6.164/
int i=12; LD A, (1861)
i=i+1; ADD A,1
LD (1861), A

зураг 6.164.
Жишээ 6.9.
Дээрх үйлдлийг INC зааврыг ашиглан дараах байдлаар гүйцэтгэж болно.
High level Assembler
language language
/зураг 6.165/
int i=12; LD A, (1861)
i=i+1; INC A
LD (1861), A

зураг 6.165.
Жишээ 6.10.
Санах ойн 1860-р үүрэнд байгаа өгөгдөл дээр 1861-р үүрэнд байгаа өгөгдлийг нэмээд, дээр нь 3-
ийг нэмээд үр дүнг нь 1862-р үүрэнд хадгалья. /зураг 6.166/
High level Assembler
language language
LD B, 0 B=0
int aa, bb, sum; LD A, (1860) A=aa
sum=aa+bb+3; ADD A, B A=aa+0
LD B, A B=A
LD A, (1861) A=bb
ADD A, B A=aa+bb
ADD A, 3 A=aa+bb+3
LD (1862), A sum=aa+bb+3

291
зураг 6.166.
6.12.5. Z80-ийн зааврын цикл
• Fetch цикл
– Зааврын санах ой дахь хаягийг PC тогтооно
– Энэ зааврыг санах ойгоос олж авна
• Execute
– Зааврыг тайлан уншина
– Хэрэв зааврын урт 2, 3 byte бол extra byte-ийг санах ойгоос олж авна
– Үйлдлийг гүйцэтгэнэ
Жишээ 6.11. LD D, C (1 байт)
– С регистерд байгаа уртыг D регистер рүү хуулна.
– Энд заавар нь санах ойн 2030 гэсэн хаягтай үүрэнд байрлаж байг. /зураг 6.167/

зураг 6.167.
Fetch cycle
– Program counter (PC) нь зааврын санах ой дахь хаягийг тогтооно.
– PC нь зааврын санах ойд байрлах хаягийг MAR уруу илгээнэ. PCÆMBR /зураг 6.168/

зураг 6.168.
– Санах ойгоос зааврыг buffer (MBR)-ээр дамжуулан IR-д хуулна. Энэ заавар нь ердөө 1
байтаас тогтсон заавар тул энэ заавар нь тухайн заавраар гүйцэтгэх үүргийг
тодорхойлсон opcode-ийг л агуулсан байна. Энэ үйлдэл нь зааврын opcode-ийг IR-д
хуулна. OpcodeÆIR /зураг 6.169/
– Мөн PC нэгээр нэмэгдэнэ. PC=PC+1

292
зураг 6.169.
Execute cycle
– C-д байгаа өгөгдлийг tmp register-д хуулна. CÆTMP /зураг 6.170/

зураг 6.170.
– tmp register-д байгаа өгөгдлийг D уруу хуулна. TMPÆD /зураг 6.171/

зураг 6.171.
Жишээ 6.12. LD A, (1000) (3 байт)
– Энэ нь санах ойн 1000 гэсэн хаягтай үүрэнд байгаа өгөгдлийг А-д хуулах үйлдэл. /зураг
6.172/

зураг 6.172.
– Энэ үйлдлийг гүйцэтгэхийн тулд 3 байтын урттай зааврыг ашиглана. Энэ зааврын
эхний байт буюу opcode нь энэ зааврын дагуу үйлдэх үйлдлийг тогтоох ба үлдсэн 2
байт нь энэ зааврыг биелүүлэхэд ашиглагдах санах ойн хаягийг агуулна. /зураг 6.173/

293
зураг 6.173.
Fetch cycle
– Program counter (PC) нь зааврын эхний байтын санах ойд байрлах хаягийг тогтооно.
– PC нь зааврын эхний байтын санах ойд байрлах хаягийг MAR уруу илгээнэ. PCÆMBR
/зураг 6.174/

зураг 6.174.
– Санах ойгоос зааврын эхний байт болох opcode-ийг buffer (MBR)-ээр дамжуулан IR-д
хуулна. өгөгдөлÆIR
– Мөн PC нэгээр нэмэгдэнэ. PC=PC+1 /зураг 6.175/

зураг 6.175.
– PC нь зааврын дараагийн байтын санах ойд байрлах хаягийг MAR уруу илгээнэ.
PCÆMBR /зураг 6.176/

зураг 6.176.
– Санах ойгоос зааврын 2-р байтыг buffer (MBR)-ээр дамжуулан Z-д хуулна. өгөгдөлÆZ
– Мөн PC нэгээр нэмэгдэнэ. PC=PC+1 /зураг 6.177/

294
зураг 6.177.
– PC нь зааврын сүүлийн байтын санах ойд байрлах хаягийг MAR уруу илгээнэ. PCÆMBR
/зураг 6.180/

зураг 6.180.
– Санах ойгоос зааврын 3-р байтыг buffer (MBR)-ээр дамжуулан W-д хуулна. өгөгдөлÆW
– Мөн PC нэгээр нэмэгдэнэ. PC=PC+1 /зураг 6.181/

зураг 6.181.
Execute cycle
– WZ-д байгаа өгөгдлийг MAR-д хуулна. WZÆMAR /зураг 6.182/

295
зураг 6.182.
– Санах ойн 1000-р үүрэнд байгаа өгөгдлийг buffer (MBR)-ээр дамжуулан А-д хуулна.
/зураг 6.183/

зураг 6.183.

296

You might also like