My dream CPU

IV. Компресирани инструкции

Нека да определим колко бита са необходими за една инструкция. Една инструкция съдържа:

Конвейер I,D, A- 2 бита
Посока на предаване на данните:

рег-памет, памет-регистър и регистър регистър
- 2 бита
Код на регистър и код на изчислението (256)- 8 бита
Три базови регистъра- 2 бита
Три индексни регистъра- 2 бита
Бит дали адресацията е непосредствена или индексна/абсолютна- 1 бит
Условие при сравнение
<,<=, ==, =>, > , != 6 условия
- 3 бита

Общо прави 20 бита за една инструкция. Това са приблизителни изчисления. Със сигурност ще трябва и да се запасим заради бъдещи модификации. Може да се добавят още модули или повече на брой кодове на изчисления. При 32 битова реализация регистърът е почти запълнен, но при 64 битова реализация на процесора остават свободни битове достатъчни да поберат още една инструкция. При 64 битова реализация младшата половина на инструкцията може да съдържа още един код на операция. Следващите 2 реда в паметта ще съдържат операндите към тези инструкции както е показано на фигурата.

Фиг. 8 Сдвоена инструкция.

Тази инструкция наричам сдвоена инструкция или компресирана инструкция.

Ползата от такава инструкция е, че инструкцията става по-къса. Нормално 2 инструкции се съхраняват в 4 последователни адреса. С компресирани инструкции ще се съхраняват на 3 последователни адреса. Това е 25% икономия. Днес компютрите имат гигабайти памет, но кеш паметите все още не са толкова големи и тази икономия не е без значение. Друго предимство е 1 такт по-малко при четене на инструкцията. При днешните процесори с голямо отношение между честотата на процесора и шината, това не е малко предимство. Друго предимство на тази инструкция е, че програмният брояч се инкрементира след изпълнението на втората инструкция. Може да се добави схемно решение при което тези 2 инструкции да се изпълняват като транзакция. При ексепшън да не се записва резултата в паметта, а ползваният от тях кеш да се изчисти. Недостатък на сдвоената инструкция е, че не може да се извърши преход към втората инструкция. При писане на програми е препоръчително програмата да се напише и тества и когато се уверите, че всичко е наред тогава да сдвоите инструкциите.