Тука сложи заглавие
Няма начин да си направя пищова на хартия от пъривя път, за това вместо да драскам по хартията ще пиша тук. Ако някой има желание може да променя пищова(стига да го прави по-елегантен и красив).
легенда:
опи: описание
хар: характеристики
фун: функционалности
Тема 1
- Проектът ENIAC
- АЛУ
- опи: основен ел. на ЦП, 2 входа, комбиниран комапратор и суматор;
- фун: 2 операнда и операция от БУ/УУ, аритметически и логически операции, начини за подаване на операнди;
- хар: разредност;
- БУ
- опи: БУ а.к.а УУ; управлява
*фун: дешифрира, определя адреси на операнди, адресира операнди и записва рез.
- хар: няма
- БР
- защо са необходими, PC/IP регистърът
- ЦП
- какво обединява; фиксиран краен брой операции, който изпълнява и начини за адресация на операнди.
- хар: основна характеристика е ширината на АЛУ, история на развитието на ЦП.
- ОП
- опи: линеен масив от байтове;
- хар: размер, адресна дума, 32 бит ЦП неможе да адресира повече от 4 GB;
- Първи принцип на Фон Нойман
- (всичко е поредица от 1 и 0);Това е голямата разлика между компютърните архитектури на Джон Атанасов и фон Нойман - при чичо Атанасов инструкциите и операндите са разделени.
- Втори принцип на Фон Нойман
- инструкциите се изпълняват принципно последователно
- Трети принцип на Фон Нойман
- ЦП изпълнява последователно каквото има в ОП, двете са свъразни с шина;
Тема 2
- Начин на работа на електронните блокове(ключове)
- лапми, транзистори, интеграция на транзистори(интегрални схеми)
- транзистор, работа на транзистор
- множество от ел. ключове, стабилни състояния, преходи от състояния и смисъл на синхронизация.
- правоъгълен сигнал, онсовен синхро сигнал(процесорният) има и други синхро сигнали
- тактова честота - 2-ра основна храктеристика на ЦП
- Цифрови блокове, прехвърляне на данни между цифрови блокове
- какво е шина, къде е синхронизиращия сигнал
- положително/отрицателно потенциална логика, опл не се използва, първо +5v, сега +3v
- комуникация между устройствата
-
-
- През падината на сигнала A настройва потенциалите на пътечките на шината;
- При пика на сигнала A е настроило стабилни сигнали, и B отваря врати;
- По време на платото - B поема (прочита) сигнала, през което време А продължава да поддържа едни и същи потенциали;
- При пада B е усвоило сигналите и затваря врати.
-
-
- 3 състояние на блок - приема, предава и високо импедентно, трето състояние - позволява направа на магистрали
- Последователно предаване на данни
- синхронно предаване
- Реализацията на код Manchester става, като приемното устройство отчита първата производна на сигнала - ако нараства, прочетеният бит е 1, а ако намалява - 0.
- асинхронно предаване
- Съхранение на данни и представяне на числови данни
- байт, MSB, LSB
- Цели числа
- Представяне на цели числа - прав и допълнителен код, 0 има единствено представяне
- Операции с цели числа - събиране, иваждане, умножение, делене, особенности и проблеми; побитови и,или, изкл. или и не
- Операции над битовите количества - алгебрично (знаково), обикновено (побитово) и ротационно преместване.
- Нецели числа
- Представане на нецели числа - нормализирана и ненормализирана манитса
- Аритметически операции с нецели числа - FPU
- Десетично представяне на числовите данни - Binary Coded Decimal, неефективност
- Представяне на символи
- Символни таблици
- Въвеждане и извеждане на символи - "код на сканиране" scan code, "текстовите редактори" (word processors), автоматично въвеждане
- Видове символни таблици
- ASCII - първоначлано 7 бита, след това 8 с много 2-ри страници
- Unicode - всички азбук 65 000 възможни комбинации, 50 - 55 хиляди места, за които има ожесточен спор кои йероглифи да бъдат добавени.
- Съхраняване на данните в паметта -при Big-endian имаме в паметта записани Byte0 Byte1 Byte2 Byte3 , при Little-endian Byte3 Byte2 Byte1 Byte0
- Подаване на информация на АЛУ - Тоест на входа на процесора винаги постъпва информацията във вид Big-endian
[[/collaspible]]
Тема 3
[[collapsible show="покажи" hide="скрии"]]
- Структура на процесора
- Структура на процесор с една обща вътрешна шина
- Структура на процесор с две вътрешни шини
- Структура на процесор с три шини
- Блокове регистри
- двустъпални регистри, две шини - входна и изходна
- Процесорите се градират в зависимост от : регистрите, шините и входовете на АЛУ (размера на входна дума)
- Забързване на ЦП
- вече разглеадните увеличаване броя на шините
- конвейрна обработка - 5 пъти по-бързо; предварителна дешифрация за да е ефективна;условният преход не се улавя от предвариителна дешифрация
*два конвейера; суперскаларният конвейер
Направата на по-бързи и естествени процесори запазва Ноймановата архитектура.
- SIMD процесори
Single Instruction Multiple Datastream ; една инструкция, различни памети
- Масивни(array) процесори
- Векторни процесори
- MIMD процесори
разпределена обработка между процесорите и се синхронизира трудно;съществено се различава от концепцията на фон Нойман.
Тези машини са сложни до такава степен, че за ефективната им работа са разработени специални програмни езици.
Тема 4
- Instruction set - набор от инструкции;
- дефиниция; съдържание;
оптимизация ^ ;
# Всички инструкции за набора(IS) да се изберат с еднаква дължина(примерно 4B). Това има предимството, че кешът(cache) ще работи много добре, тъй като ще се знае дължината на всяка следваща инструкция, ще се прочита цялата и няма да се налага да се дешифрира предварително (за да се разбере колко е дълга).
# Няколко определени дължини на инструкциите (например 4 фиксирани дължини - 2B, 4B, 6B или 8B за дължина на инструкция). Тогава, колко е дълга инструкцията ще се определя от най-левите 2 бита от кода на операцията. Операционните кодове ще се разделят на 4 групи в този случай.
# Кодът на операцията няма връзка с дължината - тя е контекстно зависима, променлива за различните инструкции и се определя по време на четенето им. Като се стигне до определен байт, ще се разбере, че инструкцията е свършила. В този случай кодът на операцията определя броя на операндите. След него следват спецификация за операнд1, за операнд2 и за result.
- Разделение на процесори по IS
- RISC
- През 80те год. екип от Бъркли под ръководството на Дейвид Патърсън намира ортогоналния сет; общо са 3 наборите; ~50 инстр;
- предимства на ортогоналния сет
- недостатъци - усложняване на компилатори, овеличаване на кода
Тема 5
- Модел с един акумулатор (Accumulator architecture)
load A ; от адрес A се прочита стойност, която неявно се вкарва в регистъра Acc
add B ; от адрес B се прочита стойност и се добавя към Acc
store C ; съдържанието на Аcc се записва в клетка с адрес C
- Модел с вътрешен стек (Stack architecture)
push A ; Stack[++Top] = M[A] (адрес A от паметта)
push B ; Stack[++Top] = M[B]
add ; T1 = Stack[Top--] ; T2 = Stack[Top--]; Stack[++Top] = T1 + T2
pop C ; M[C] = Stack[Top--]
- Модел с разширен акумулатор (Register - Memory architecture)
В този модел вместо единичен регистър, на единия вход стоят малък брой регистри с къси имена (например 16 регистъра с 4-битови имена)
- Модел M-M / S-S (Memory - Memory / Storage - Storage architecture)
add C, A, B ; M[C] = M[A] + M[B] - голяма плътност на кода
- Модел R-R (Load - Store architecture)
load R1, A
load R2, B
load R3, D
add R1, R2
add R1, R3
моделът R-R е контекстно зависим; проблемност при подпрограмите; ограничение от страна брой регистри
- В края на краищата…
в днешно време най-широко се използва Load - Store архитектура, върху която се изпълняват предимно R-R и R-M инструкции. Бързодействието взима връх над дължината на кода и простотата на устройството
Тема 6
- Подравнени и неподравнени данни
шини - причини за подравняване

недостатъци на подравняване
недостатъци на неподравнени данни(особенно ако сме между 2 старници)
- Начини за адресиране
- Непосредствен - $\#n$
- Регистров - $M[R_i]$
- Регистров с отместване - $M[R_i +\#n]$
- Индексна форма - $M[R_i + R_j]$
- Двойна косвена регистрова форма - $M[M[R_i]]$
- Автоинкрементална форма - $M[R_i]$ ; $R_i +=$ sizeof(операнд)
- Автодекрементална форма - $R_i -=$ sizeof(операнд) ; $M[R_i]$
- Индексна със скалар - $[R_i + d * R_j + \#n]$
- Други - два от тях са директно подаване на операнд в инструкцията и подаване на регистър, съдържащ операнда (просто, нали?).
- RISC и отмествания

- 93%
- В RISC е имплементирано именно адресиране чрез регистър и отместване. Така, при 32-битови регистри може да имаме 6 бита за код на операция, 5 бита за "име" на регистър-цел, 5 бита за "име" на регистър, съдържащ адреса, и 16 бита за стойност на отместването. По този начин се осигуряват еднакви дължини на load и store инструкциите.
Тема 7
- Управляващи инструкции
- Аспекти на управляващите инструкции
- Инструкции за управление
- Детайли

- jump / branch
- flags
- call / return- pри фон Ноймановата архитектура извиканата подпрограма задължително трябва да се върне в извикващата
- system call / return - при връщане от прекъсване се възстановява състоянието на целия процесор (включително стойността на стековия указател);
- Формиране на адреса на прехода

- PC-relative - отместването спрямо текущия PC - потдържа 94%, но само на малки разстояние 256 байта;
- Rbase + displacement - имаме базове регистър и отместване спрямо него; това е проблем с PC
- absolute - дървен - задаване на 32 битов адрес на прескачане; ако програмата не е там - проблем.
- vector - използва се при прекъсвания; опасна тъй като е неудобна за конвейера; 256 вектора по 4 байта, като адресирането се определя само първия чрез jmp x;
- Преходи към подпрограми
- да се върне – става чрез link return register; Re Rx са регистрите; проблем с много подпрограми - стек;

при всяко влизане в подпрограма се налага да се запазва състоянието на процесора; при извикване на call се запазват само регистрите, при извикване на system call освен регистрите се запазват указателите към стека и др.;

софтуерното запазване на състоянието маха проблема с Re регистъра. само не трябва подпрограмата да си реже клона на който стой.
- Запазване на регистрите
- save area, multiple load и multiple store в извикващата програма
- callee - подпрограмта се грижи, преди return;
- Групи регистри - при влизане се пазят in и local, а при излизане out и local. При системните извиквания се пазят всички регистри, а при обикновените само базовите
- Инструкции за условно преместване на данни. Предикатни данни
- Условно преместване
- blez
#0 blez r1, #2 ( Branch Less than or Equal to Zero )
#1 mul r3, r2, r1
#2 ...
- cmovgt
#0 mul r4,r2,r1
#1 cmovgt r3,r4,r1 (Conditional MOVe Grate Than zero)
- предикати
#0 sgtzp p1,r1 (Set Greater Than Zero Predicate)
#1 mulp r3,r2,r1,p1 (MULtiply on Predicate)
- Разлики между RISC и CISC процесори
| RISC | CISC | |
|---|---|---|
| брой цикли на процесора за 1 инструкция | моноцикъл - инструкциите се изпълняват за 1 цикъл на процесора. Операндите и резултата са в регистрите | мултицикъл - всяка инструкция отнема повече от 1 такт на процесора |
| хардуерно/софтуерно управление | хардуерно управление - всички инструкции са реализирани на хардуерно ниво - т.е в интегрални схеми | всяка сложна инструкция е микропрограма, записана в процесора |
| връзка с паметта | само load/store операциите работят с паметта. Всички сметки минават през регистрите | има по-сложни инструкции за адресиране от вид M-R и M-M |
| дължина на инструкциите | фиксирана дължина на инструкциите (пр. 4B) | променлива дължина на инструкциите |
| режими на работа на CPU | малко режими на работа на процесора | много режими на работа на процесора |
Тема 8
- Вътрешна структура на процесора

- TLB(transfer location block) - прави адресите да сочат в кеша, не в РАМ
- Инструкциите се гледат по 2ки. Има 10 правила, по които УУ решава дали може да ги пусне по двата паралелни
- FPU
- Регистри (+ флагове)







