Алгебраїчне додавання у зворотному та в доповняльному кодах. Модифіковані коди.
При складанні двох чисел, представлених в зворотному або додатковому коді, їх знакові розряди складаються аналогічно цифровим, причому можливе перенесення одиниці із старшого цифрового розряду в знаковий. Якщо обидва операнди представлені в прямому коді і мають однакові знаки, то над такими операндами виконується процедура складання і результату привласнюється знак початкових операндів.
Розглянемо приклади:
1) 210 + 410 = 610 2) -210 - 410 = -610
0. 0010 а) 1. 1110 б) 1. 1101
+ 0. 0100 + 1. 1100 + 1. 1011
0. 0110 = 610 1 1. 1010 = -610 1 1. 1000
+1 коррекция
1. 1001 = -610
У другому прикладі обидва негативних доданків представлені або в додатковому коді (а), або в зворотному коді (б). У першому випадку результат отриманий в додатковому коді, а в другому, після корекції, - в зворотному. Якщо ж операнди мають різні знаки, то повинна виконуватися процедура віднімання. Але, як вже наголошувалося, процедуру віднімання замінюють процедурою складання, негативний операнд (від'ємник) представляють в зворотному або додатковому коді, а позитивний операнд - в прямому коді.
Наприклад:
1) 410 - 210 = 210
а) 0. 0100 б) 0. 0100
+ 1. 1110 + 1. 1101
1 0. 0010 = 210 1 0. 0001
+1 коррекция
0. 0010 = 210
2) 410 - 410 = 0
а) 0. 0100 б) 0. 0100
+ 1. 1100 + 1. 1011
1 0. 0000 = 010 1. 1111
+1 коррекция
1 0. 0000 = 010
3) 210 - 410 = -210
а) 0. 0010 б) 0. 0010
+ 1. 1100 + 1. 1011
1. 1110 = -210 1. 1101 = -210 коррекции нет.
У прикладах 1а) і 2а) одиниця, що виходить за розрядну сітку, не враховується ("втрачається").
Як видно з прикладів процедура складання, алгебри, з додатковими кодами простіше, ніж із зворотними кодами, оскільки в останньому випадку при виникненні одиниці перенесення за межі розрядної сітки, виділеної для числа у форматі з фіксованою комою, доводиться коректувати результат за допомогою додаткової процедури збільшення одиниці до результату. Нульовий результат виходить або в прямому коді чи ж в зворотному, що також вимагає корекції результату. Тому в даний час на практиці для представлення негативних операндів використовується в основному додатковий код. Таким чином, перед виконанням самої процедури складання, алгебри, в додатковому коді потрібно проаналізувати знаки доданків. Якщо вони різні, то виконується складання (фактично віднімання), алгебри, без перевірки на переповнювання результату, оскільки його в цьому випадку просто не може бути. Але контролюється щоб в результаті не з'явився заборонений негативний нуль. Якщо ж у початкових операндів знаки однакові, то такий же знак заздалегідь привласнюється результату і виконується саме складання. Якщо знак остаточного результату не співпадає із заздалегідь привласненим знаком, то це є ознакою переповнювання і отже, неправильного результату. Ще раз підкреслимо, що результат складання, алгебри операндів представлених в зворотному і додатковому кодах виходить також в зворотному і додатковому коді відповідно.
Модифікований прямій, зворотний і додатковий код
Ці коди відрізняються від звичайних прямих, зворотних і додаткових тим, що мають по два знакові розряди. При виконанні арифметичних дій над двійковими числами ці два знаки дозволяють легко визначити переповнювання розрядної сітки. Якщо вміст цих двох розрядів співпадає, то означає переповнювання відсутній. Інакше в комп'ютері виробляється сигнал (сигнал переповнювання), що управляє, або на останов комп'ютера, або на усунення переповнювання розрядної сітки.
Приклади.
1) Скласти два числа в модифікованому коді:
X = 00. 01012, Y = 00. 00112 , X + Y = 510 + 310 = 810
00. 0101
+ 00. 0011
00. 1000 = 810
2) Сложить X = -510 = -01012 = 11. 0101 , Y = -810 = -10002 = 11. 1000
X + Y = -1310
11. 1011
+ 11. 1000
1 11. 0011 = -1310
3) Сложить X = 0,1101 , Y = 0,1101, X + Y = 2610
00. 1101
+ 00. 1101
01. 1010 различные знаковые разряды свидетельствуют о переполнении разрядной сетки.
4) -8 - 8 = 0
11. 1000
+ 11. 1000
1 11. 0000 .
У останньому прикладі вийшов негативний нуль, тому комп'ютер генерує сигнал збою. Треба відзначити, що в машинах 3-го і 4-го поколінь модифікований код не використовується.
. Компаратори. Послідовне та паралельне з’єднання багаторозрядних компараторів.
EMBED Visio.Drawing.11
EMBED Visio.Drawing.11
К555СП1
Збільшення входів компаратора шляхом послідовного з’єднання
EMBED Visio.Drawing.11
Схема проста тим, що при нарощуванні немає всяких допоміжних елементів
EMBED Equation.3
, де tпор – час порівняння, tзк – час затримки компаратора
Порівняння послідовних входів
EMBED Visio.Drawing.11
Множення чисел з фіксованою комою.
Zi+1=(Zi+x*yi+1)2-1; i-розрядність чисел. х- множене; у-множник; z- сума часток.
Множення починається з молодшого розряду множника і виконанні зсуву множенного вліво.
EMBED Equation.3
EMBED Visio.Drawing.6
Множення починається з старших розрядів множника при нерухомуму множеному і при виконанні зсуву вліво часткових добутків.
Zi+1=2(Zi+Xyn-1);
EMBED Visio.Drawing.6
Множення починається з старших розрядів множника при нерухомій сумі часткових добутків та зсуву множеного вправо.
EMBED Visio.Drawing.6
EMBED Visio.Drawing.6
Методи прискорення операцій множення.
Аналіз декількох розрядів.
нема ітерацій
додавання х.
10- дод. 2х.
11 – дод. 3х.
Аналіз всіх розрядів.
Там де нулі ітерацій нема.
Заміна додавання відніманням.
Аналіз чого менше.
Апаратне виконання множення.
Х=2Мх*2Рх
У=Му*2Ру
Я=ХУ=МхМу2(Рх+Ру)
Сходинки скалярного конвеєра.
Перелік мікроподій надано мікрокомандою:
IF/ID.IR <= Mem[PC]; IF/ID.NPC, PC <= (if EX/MEM.cond {EX/MEM.NPC} else {PC + 4})
Обидві зазначені мікродії мають бути сумісними в часі і виконуються паралельно за один цикл (як правило, один тактовий інтервал). Перша мікродія вибирає нову інструкцію з пам’яті Instruction memory за адресою, що зберігається в PC і записує її до поля IR (Instruction Register) конвеєрного регістра IF/ID. В той самий час друга мікродія змінює вмістиме поля NPC конвеєрного регістра і програмний лічильник за алгоритмом:якщо бітове поле cond(ition – умова) попередньої інструкції , яка пройшла цикл EX, є true, тоді порушується природна черговість і вмістиме IF/ID.NPC та PC отримує значення поля EX/MEM.NPC конвеєрного регістра EX/MEM; iнакше записується природня, наступна адреса (PC+4) з врахуванням байтової логічної структури адреси пам’яті.
Мікродії сходинки ID скалярного конвеєра
Перелік мікроподій надано мікрокомандою:
ID/EX.A<=Regs[IF/ID.IR 8..10 ]
ID/EX.B<=Regs[IF/ID.IR 11..15 ]
ID/EX.NPC<= IF/ID.NPC
ID/EX.IR<= IF/ID.IR
ID/EX.Imm<= (IR 16 ) 16 ##IR 16..31
Усі чотири мікродії є сумісними і виконуються в часі паралельно. Перша мікродія вибирає перший операнд з програмно керованого регістра регістрового файла до службового регістра А, що є інтегрованим до конвеєрного регістра ID/EX. При цьому адреса програмно керованого регістра визначається вмістимим підполя (розряди 8..10) поля IR конвеєрного регістра IF/ID. Тут вибирається операнд. Такі ж за призначенням дії виконує друга мікрооперація, але з іншим джерелом і приймачем. Третя і четверта мікродії зберігають контекст інструкції, що знаходиться на поточній сходинці. Це необхідно для її коректного просування конвеєром. Четверта мікродія вибирає (та знаково розширює з 16-ти до 32-ч бітів) до службового регістра Imm(ediate – безпосередній, негайний) операнд, який містився у підполі 16..31 поля IR конвеєрного регістра. Поточний цикл Instruction Decode можна розширити у назві додатковим означенням Operand Fetch (Вибирання Операндів).
Мікродії сходинки EX скалярного конвеєра ( АЛП інструкція)
Перелік мікроподій надано мікрокомандою:
EX/MEM.IR <=ID/EX.IR
EX/MEM.cond <= 0
EX/MEM.ALUoutput <=ID/EX.A op ID/EX.B
Або EX/MEM.ALUoutput <=ID/EX.A op ID/EX.Imm
Усі мікродії є сумісними в часі, виконуються паралельно за один цикл (тактовий інтервал). Перша мікродія зберігає контекст регістра інструкції. Четверта мікродія забороняє АЛП-інструкції впливати на послідовність вибирання інструкцій з пам’яті. Друга і третя мікродії утворюють альтернативу (або). Кожна з них визначає пару операндів для операції ор і при цьому записує результат ор до службового (програмно некерованого) вихідного регістра ALU під назвою ALUoutput. Важливо, що на цьому циклі конвеєра вперше від початку треба визначитися із її типом.
Мікродії сходинки EX скалярного конвеєра (load/store інструкції)
Перелік мікроподій надано мікрокомандою:
EX/MEM.IR <=ID/EX.IR
EX/MEM.ALUoutput <=ID/EX.A + ID/EX.Imm
EX/MEM.B <=ID/EX.B
EX/MEM.cond (ition) <= 0
Усі мікродії є сумісними в часі, виконуються паралельно за один цикл (тактовий інтервал). Перша мікродія зберігає контекст регістра інструкції, друга вираховує виконавчу (ефективну) адресу пам’яті даних на основі бази (Immediate – Безпосередній операнд), третя зберігає контекст службового, програмно некерованого регістра В, четверта забороняє поточній інструкції змінювати природний порядок адресування інструкцій. Важливо, що на цьому циклі конвеєра вперше від початку треба визначитися із типом інструкції.
Мікродії сходинки EX скалярного конвеєра (інструкція branch)
Перелік мікроподій надано мікрокомандою:
EX/MEM.ALUoutput <=ID/EX.NPC + ID/EX.Imm
EX/MEM.cond <=(ID/EX.A op 0)
Мікродії є сумісними в часі, виконуються паралельно, за один цикл (тактовий інтервал). Перша мікродія вираховує цільову адресу можливого переходу та зберігає її у робочому (некерованому програмістом) вихідному регістрі ALUoutput, детально – у полі ALUoutput конвеєрного регістра EX/MEM. Друга мікродія вираховує істинне або хибне значення логічної умови, що визначається порівнянням в деякому, тобто op розумінні, службового регістра А, визначеного за вмістимим на циклі ID, з нулем ( дорівнює нулю, не дорівнює нулю,тощо). Логічне значення умови записується до поля cond конвеєрного регістра EX/MEM з метою дозволу зміни природнього порядку вибирання інструкцій програми, коли cond=1. Важливо, що на цьому циклі конвеєра вперше від початку виконання інструкції має бути визначеним її тип. Контексти не зберігаються, що неформально свідчить про завершення опрацювання цієї інструкції в конвеєрі.
Мікродії сходинки MEM скалярного конвеєра (AЛП інструкція)
Перелік мікроподій надано мікрокомандою:
MEM/WB.IR <=EX/ MEM.IR
MEM/WB.ALUoutput <= IR/MEM.ALUoutput Мікродії є сумісними в часі, виконуються паралельно за один цикл (тактовий інтервал). Активних мікродій обробки інформації немає, що свідчить про транзитний характер опрацювання інструкції на цій сходинці. Обидві мікродії лише зберігають на подальше контексти регістра інструкцій і вихідного регістра АЛП.
Мікродії сходинки MEM скалярного конвеєра ( інструкції load/store)
Перелік мікроподій надано мікрокомандою:
MEM/WB.IR <=EX/ MEM.IR
MEM/WB.LMD <= Mem[EX/MEM.ALUoutput]
або Mem[EX/MEM.ALUoutput] <= EX/MEM.B
Мікродії є сумісними в часі, виконуються паралельно за один цикл (тактовий інтервал). Перша мікродія виконує транзитне пересилання вмістимого коду операції з відповідного поля вхідного конвеєрного регістра до відповідного поля вихідного конвеєрного регістра сходинки. Це свідчить про те, що виконання інструкції (лише – завантаження) має продовжуватися наступної сходинки конвеєра. При завантаженні виконується друга мікродія, а при збереженні – третя. Виконавча (ефективна) адреса пам’яті даних визначається вмістимим службового вихідного регістра АЛП. При завантаженні вмістиме комірки пам’яті даних зберігається в проміжному регістрі LMD (Load Memory Data), а при збереженні вмістиме службового регістра В записується до комірки пам’яті даних. Важливо, що надана мікропрограма ігнорує існування відомого парадоксу пам’яті, що коректно тільки за умови використання кеш-пам’яті даних та системи переривань у випадку “невлучення до кешу” (“покарання” за невлучення надається певною кількістю додаткових тактових інтервалів, аби погодити швидкодію процесора і пам’яті даних за рахунок пригальмування операцій на скалярному процесорі).
Мікродії сходинки WB скалярного конвеєра (АЛП інструкції)
Перелік мікроподій надано фрагментом мікропрограми:
Regs[MEM/WB.IR 16..20 ] <= MEM/WB.ALUoutput
Або Regs[MEM/WB.IR 11..15 ] <= MEM/WB.ALUoutput Завжди виконується лише одна мікрооперація з двох зазначених. В кожному випадку результат обробки операндів в АЛП з поля конвеєрного регістра MEM/WB.ALUoutput записують до регістра загального призначення (комірки пам’яті регістрового файла). Використання двох мікро інструкцій замість однієї пояснюється тим, що у форматі інструкцій load DLX повного дотримання правила “фіксоване розташування полів” немає. За рахунок цього адреса призначення у форматі інструкції рухається: може визначатися розрядами 16..20 або розрядами 11..15 формату інструкції. Так чи інакше, але вказана "рухомість” адреси поля призначення ускладнює апаратний пристрій керування і може зменшити його швидкодію.
Мікродії сходинки WB скалярного конвеєра (інструкція load)
Перелік мікроподій надано мікрокомандою:
Regs[MEM/WB.IR 11..15 ] <= MEM/WB.LMD Зазначимо, що інструкція store (збереження) на цій сходинці виконання мікродій не потребує. Тут завершується виконання лише інструкції завантаження операнда з комірки пам’яті даних до регістра загального призначення регістрової пам’яті процесора. Операнд зберігається у полі LMD вхідного конвеєрного регістра MEM/WB, а адреса комірки (регістра) регістрового файла міститься у полі MEM/WB.IR 11..15. Важливо, що регістровий файл повинен реалізувати два порти, а саме, два порти на читання та один порт на запис. При цьому, якщо дві адреси на читання постачає конвеєрний регістр (IF/ID), тоді адресу на запис і дані постачає щойно розглянутий