Основы вычислительных систем
Адресное кодирование. В целях повышения быстродействия компьютера используется модификация команд. Она состоит в изменении адресной части базовой команды. В некоторых случаях в адресной части базовой команды индексируются и адреса команд. Этот прием используется в программах, состоящих из нескольких вычислительных блоков. Операции, связанные с изменением адресов, не застрахованы от ошибок.
Один из методов снижения вероятности таких ошибок состоит в особом кодировании, применяемом при программировании. Речь идет о выборе ячеек из ЗУ, совокупность адресов которых составляет какой-нибудь корректирующий код, например код с проверкой на четность.
Пример. Пусть программа разделена на ряд вычислительных блоков, начальные адреса которых хранятся в виде таблицы. Основная функция общей части программы – правильно определить вход в эту таблицу.
Пусть таблица имеет 8 входов. Выберем для их хранения 8 из 16 последовательных ячеек ЗУ, которые имеют адреса с четным числом единиц (см. табл. 11.5). Во все остальные ячейки поместим одну и ту же команду перехода к исправляющей программе ПкИП. Определить вход в таблицу несложно. Вот одна из возможностей. Для определения номера входа (N) надо брать все числа от 0 до 7, складывать их с числом, сдвинутым влево на один разряд. Таким образом, номер ячейки Nвх. А с адресомвхода в блок А равен Nвх. А = А + 2А.
| N ячейки |
|
| 0000 | 0 |
ПкИП | 0001 |
|
ПкИП | 0010 |
|
| 0011 | 3 |
ПкИП | 0100 |
|
| 0101 | 5 |
| 0110 | 6 |
ПкИП | 0111 |
|
ПкИП | 1000 |
|
| 1001 | 15 |
| 1010 | 10 |
ПкИП | 1011 |
|
| 1100 | 12 |
ПкИП | 1101 |
|
ПкИП | 1110 |
|
| 1111 | 9 |
Таблица 7.5. Пример адресного кодирования
Вычислим номера ячеек, в которых записаны адреса входов во все восемь блоков.
1) 000 |
| 2) 001 |
| 3) 010 |
| 4) 011 |
| 5) 100 |
| 6) 101 |
| 7) 110 |
| 8) 111 | ||||||||
000 |
| 001 |
| 010 |
| 011 |
| 100 |
| 101 |
| 110 |
| 111 | ||||||||
| 000 |
|
| 011 |
|
| 110 |
|
| 101 |
|
| 1100 |
|
| 11111 |
|
| 1010 |
|
| 1001 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||
N=0 |
| N=3 |
| N=6 |
| N=5 |
| N=12 |
| N=15 |
| N=10 |
| N=9 | ||||||||
Замечание. Межразрядные переносы и выходы за интервал при выполнении операции не учитываются. Одиночная ошибка (любая) при определении входа в блок передает управление к повторному вычислению ее номера.
1. Разработайте n-значный код Хемминга, создайте и реализуйте алгоритм обнаружения и исправления k-кратной ошибки.
2. Разработайте алгоритм сжатия простого текстового документа.
3. Разработайте и реализуйте алгоритм сжатия цветного изображения.
4. Разработайте программу встроенной защиты данных, базирующейся на некоторых специфических особенностях компьютера (временные характеристики, тип микропроцессора, конвейер шины данных и т. п.).
5. Разработайте и реализуйте алгоритм защиты от дизассемблера, используя:
· механизм самогенерируемых кодов;
метод динамического изменения кода исполняемого модуля.
Структура сложных систем при представлении ее на уровне устройств может оказаться настолько сложной, что теряет обозримость и выходит за рамки возможностей методов исследования, используемых при анализе и синтезе систем. Программное обеспечение. Технические средства СОД реализуют элементарные операции вводе – выводе и обработки данных.