Никитин А.В.
Компьютеры Фибоначчи. Продолжение …
Пока
писал ответ на вопросы А.П.Стахова [1], появилась реплика А.А.Борисенко[3]. И
половина ответов стала просто не нужна. Да, стареют идеи…
В
большинстве случаев я могу только согласиться с выводами и определениями
А.А.Борисенко. И в части избранной когда-то стратегии, и в тактических
действиях по её технической и организационной реализации.
То, что
тогда понималось как истина, сегодня таковой уже не является, и более того,
ситуация сменилась на противоположную. Но, … тогда мы
были уверены, что те решения являлись единственно верными. Мы действовали
согласно тому пониманию. И как мне кажется, это было совершенно правильным.
Каждое
время диктует свои стратегии и способы реализации идей. Но, если не успели или
не смогли реализовать идею в свое время, то сегодня надо менять … идею. Не в
техническом плане, а в плане её понимания в сегодняшних условиях.
К этому
мы вернемся в конце статьи.
А пока…
ответы на поставленные вопросы:
«…важным
классом современных микропроцессоров являются так называемые «сигнальные
микропроцессоры», которые структурно представляют совокупность трех структурных
блоков:
АЦП
->ПРОЦЕССОР ->ЦАП
«…И
если информация на выходе АЦП будет недостоверной, то никакой супернадежный процессор не поможет. Он просто будет с
высокой надежностью обрабатывать недостоверную информацию, поступающую с АЦП».
Проблема
АЦП – ЦАП преобразования сигналов действительно очень важна для систем
управления и контроля. Правда тут, видимо, есть некоторые разногласия в чтении
и понимании.
Процесс
преобразования аналогового сигнала в цифровой код (АЦП) и обратно из цифрового
кода в аналоговый сигнал (ЦАП) почти всегда имеет статистический характер, т.е.
этот процесс многократный и периодический.
Даже если
возникла ошибка, которая может привести к сбою
передачи данных, то эта ошибка все же имеет разовый характер. Уже следующий
блок информации или исправит возникшую ошибку, или укажет источник этой ошибки.
Вне зависимости от системы кодирования и применяемого цифрового кода сигнала.
Если есть
установленный уровень перехода из состояния контроля в состояние управления, и
цифровой сигнал датчика, раз за разом, определяется как превышение этого уровня
и выход за пределы контроля, то вот тут и вырабатывается управляющие
воздействие. Так происходит при динамическом управлении.
Такая
система управления и контроля перестанет устойчиво работать только в случае
многократно повторяющихся ошибок. Как мы понимаем, к системе кодирования это
имеет отношение, но не самое прямое.
Пример –
цифровое ТВ. Ошибки сигнала, не приводящие к потере допустимого уровня качества
изображения, не приводят к срыву работы системы. Мы их часто видим. Да, они
есть. Но … и всё.
Еще можно
говорить об устойчивости системы кодирования к разовым или случайным ошибкам. К
тем, появление которых, даже единственный раз, уже может привести к ошибкам
управления. Такой вид ошибок очень плохо поддается своевременному обнаружению в
короткий промежуток времени от их появления до начала обработки и выработки
управляющего воздействия.
Вот здесь
сегодня передний край научных идей, как мне кажется. Это же подчеркивает и
А.А.Борисенко. Как здесь работает Ф-код нам еще никто не
рассказывал.
И пока
разговор идет, видимо, о выработке управляющего воздействия по результатам
обработки информации.
О том,
что определяет следующий вопрос:
Вы
никогда не задумывались над тем, почему участились катастрофы при запуске российских ракет-носителей «Союз»?
Вы
заставили меня немного вспомнить об очень важном понятии. О надежности, о
гарантии безотказного срабатывания, или «наработке на отказ»…
О чем
идет речь?
С какой
вероятностью при нажатии на кнопку выключателя свет зажжется? Сколько раз
выключатель будет исправно работать, и когда он вдруг этого не выполнит? После
ста, тысячи или миллиона включений?
Если
наработка на первый отказ приближается к миллиону срабатываний, то гарантия
того, выключатель сработает единственный, и последний раз в жизни, хотя бы
через год после установки его в схему - есть, и достаточно высокая. Но, ведь
это только вероятностные характеристики. В реальности все сложнее. И все же…
Почему мы
так внимательно об этом говорим? Потому, что мы говорим о системах управления
ракеты, торпеды, снаряда, … о тех сложных системах, которые часто должны
сработать только один раз. Один. Но, должны, … и с гарантией.
Практически, в любых условиях. Уровень надежности выполнения этой задачи мы и
создаем.
Понятно,
что наработка на отказ уменьшается при росте сложности системы управления. В
какой-то момент увеличивающаяся сложность системы сводит показатели надежности
работы до предельно низкого уровня. И красиво задуманная, хорошо выполненная
сложная система управления … дает сбой. Он оказывается почти неизбежным при
невыполнении требований надежности всех её составляющих.
Мы это
наблюдали на компьютерной технике 90-х. Красивые слова рекламы о возможностях
компьютера и его системы Windows плохо
соответствовали их реальной работе. Система и компьютер постоянно нуждались в
проверках и повторах исполнения того или иного программного действия.
Ситуация
стала исправляться только сейчас.
То, что
сегодня происходит с «Булавой» и «Прогрессами», это и есть снижение надежности,
коэффициента той самой наработки на отказ. А причины…
Скорее
всего, они имеют системный характер.
Надежность
стоит очень дорого. Во всех смыслах.
Система
кодирования информации тут играет важную, но, всё же, не основную роль.
То, что
почти все процессоры, применяемые в российских разработках, изготовлены не у
нас, вот это, действительно очень важно. И стратегически, и политически, и
технически.
И,
конечно, российским производителям сложной техники очень бы хотелось иметь
свою, отечественную разработку, сначала простого, а потом и сложного,
процессора, работающего на принципиально новой системе кодирования информации,
которая бы выгодно отличалась своей высокой помехоустойчивостью.
Если в
основе этой системы будет счет Бергмана, то пусть будет.
А
как Вы себе представляете использование классического двоичного кода в
компьютере?
Ну, более
или менее представляю.
Вопрос,
наверное, не в этом. Если мы вспомнили о погрешности преобразования [1], то,
видимо, разговор идет о представлении числа в двух вариантах: с фиксированной
запятой и плавающей запятой [4-7].
Наверное,
имеет смысл остановиться на этом подробнее.
Но,
сначала надо зафиксировать понимание предлагаемых систем счисления:
Ф-код -
бинарная запись действительного числа в системе Бергмана.
Золотой
код - бинарная запись целого числа в системе Бергмана.
Зачем
нужны были эти разделения пока не очень непонятно. Но, раз сделано, то мы
просто это запомним.
А теперь
продолжим…
Да, любой
процессор сегодня работает только с целыми числами. Порядок числа и постановка
запятой, как в исходных числах, так и в результирующих, производится до, или
уже после проведения арифметической операции, а все вычисления производятся с
целыми числами.
Но, чтобы
преобразовать число, из формы с зафиксированной запятой в число с плавающей
запятой - надо его сначала получить. В Ф-коде.
А потом
уже двигать запятую и вычислять степени сдвига.
Конечно,
это делается не в процессоре, а задолго до того, как число поступит в него, в
качестве рабочего вычислительного компонента.
Я проведу
аналогию с двоичной системой счисления.
Сама по
себе двоичная система счисления, это система полномасштабная. Она имеет дробную
часть и пригодна для преобразования действительных чисел любой системы
счисления в двоичные с любой заданной точностью.
В
контроллер мы вводим исходное число с дробной частью. Если не вводится
принудительная установка точности вычислений, то дробная часть числа определяет
необходимую точность вычисления. Если это производится в автоматическом режиме,
то мы устанавливаем предел погрешности преобразования по последнему отличному
от нуля разряду дробной части. И формируем разрядный сдвиг плавающей запятой.
Режим
отображения от 2 -128, до 2 +128. Эти пределы являются и предельной точкой
отсечки с фиксацией ошибки преобразования.
Получаем
экспоненциальную форму записи. Целое число и число степени разрядного сдвига.
Это и есть целочисленная форма записи числа, имеющего дробную часть. Вот эти
числа и поступают в процессор для обработки.
Теперь мы
так же переведем число в Ф-код. И получим результат. Потом посчитаем разряды и
сделаем сдвиг запятой в последний, определяемый контроллером разряд числа. Это
отсечка целого числа.
Если
далее идет дробная часть за пределом допустимой точности - отбрасываем, как
минимальную ошибку преобразования.
Получили
целое число и грузим его в процессор.
Понятно,
но не очень...
Похоже,
что разницу в преобразовании десятичных чисел в двоичный код и Ф – код мы уже
почувствовали, но не совсем поняли…
А разница
ощутимая.
Работа с
числами в двоичном коде не предполагает появления у целых чисел дробной части.
Почему?
Потому,
что мы имеем систему, в основе которой - целое число. И любое изменение
состояния того или иного разряда числа сопровождается только односторонним
сдвигом разрядных единиц. При увеличении - влево, при уменьшении – вправо. За
исключением нулевого разряда. Там мы имеем только односторонний левый сдвиг – в
сторону увеличения. Просто потому, что меньшей единицы вычисления у нас нет. И
1-1=0. Предельная точность вычисления достигнута.
Это
свойство и определило основы построения двоичного процессора. Он начинает и
заканчивает вычисление с одним форматом числа. Целым.
Теперь
посмотрим на вычисление в системе системы Бергмана.
В
основании системы счета иррациональное число. Это приводит к тому, что, при
любом изменении в любом разряде числа, мы имеем одновременно и правый, и левый
сдвиг единиц в соседние разряды. И он ничем не ограничен.
Это
означает возможное изменение абсолютной разрядности числа в процессоре, где
это, при применении двоичных чисел, уже не предусматривалось.
И потому,
преобразование числа 100000 в экспоненциальную форму, как 1 ×Ф5, с
последующей записью, например, в четырехразрядный счетчик, как 0001, допустимой
для двоичного процессора, нельзя считать допустимой для процессора Ф-кода.
Потому, что любое последующее действие приведет к ошибке. И останову. Просто
потому, что есть 1=0,11, та самая свертка – развертка числа, необходимая в этой
системе вычислений.
Значит
надо вводить, как минимум, еще два разряда в состав процессора. И устанавливать
искусственную запятую. При обработке целых чисел.
Для
сохранения принятой формы обработки чисел в процессоре, как целых, на этом
можно и остановиться. Предельная погрешность преобразования и вычисления будет
сохранена. При этом увеличение значности числа Ф-кода
по сравнению с двоичной системой составит уже в 1,44 раза и плюс еще 2 разряда.
Это мы уже поняли.
Степень,
получившуюся от сдвига ... надо тоже перевести в число Ф-кода.
С
фиксированной запятой. А потом, может быть, в экспоненциальную форму. И опять
надо запланировать пустые разряды для возможной дробной части. Хотя бы два
разряда. Увеличить на это количество разрядов размер целого числа с плавающей
запятой. И ввести искусственную запятую.
Потому,
что если не сделать эту операцию, то даже 1+1 =10,01, т.е. вторая степень числа
запишется с ошибкой. Это недопустимо. Надо же будет потом обратную операцию
производить, преобразовывать результат работы со степенями обратно в десятичное
число. И получить то же самое целое число. Потому и нужна искусственная
запятая.
Но, если
мы уже ввели искусственную запятую, то можно, а скорее всего и будет нужно,
ввести в процессор и всю дробную часть числа. Уж если использовать новую
систему счисления, то в полном объеме. Тогда это дает максимальный эффект.
Кстати,
это предположение и стало основой для расчета предельной разрядности главного
процессора [2], который А.П.Стахов считает ошибочным.
Если
учесть дополнительные разряды, то золотой код, как отдельная система счета
теряет смысл. Остается только система Бергмана, или Ф-код, как единственная
система счисления.
Правда,
А.П. Стахов предлагает другое решение. Искусственное
ограничение целой части числа и введение особых правил работы с нулевым
разрядом. Как это было сделано в работе с кодами Фибоначчи, т.е. 1+1=10.
Как мне
кажется, любая уникальность в этом случае – не самое лучшее решение. Но,
возможное. И, может быть, вполне допустимое для
микропроцессоров.
Насколько
это возможно, допустимо и необходимо для больших скоростных многоразрядных
процессоров, видимо будут разбираться специалисты.
Им
виднее.
***
А теперь
вернемся к тому, с чего начинался разговор. К компьютеру Фибоначчи.
Не к
системам счисления и процессору, а к компьютеру, как комплексу для вычислений и
обработки цифровой информации. От ввода данных до вывода результата.
Письмо в
Госплан СССР [1] показывает, что какая-то предварительная проработка по
компьютеру проводилась. Но, никакой, даже предварительной, архитектуры
компьютера, технических характеристик главного процессора, состава применяемых
систем счисления в функциональных блоках и микропроцессорах для обработки и
хранения информации, и т.д., всего того, что составляет объем предварительной
информации о компьютере, мне, и думаю, читателям, видеть не приходилось.
Конечно,
хотелось бы увидеть эти данные, пусть даже в одной статье А.П.Стахова.
Примерно
о том же пишет и А.А.Борисенко [3].
Понятно,
что за время прошедшее с момента окончания работ по компьютеру Фибоначчи
техника ушла вперед. Некоторые характеристики могли устареть, другие требуют
уточнения для современных условий, но, тем не менее, их публикация позволит
оценить уровень заложенных тогда технических решений, степень их соответствия
сегодняшним требованиям или установить необходимость коррекции с поправкой на
время.
Хорошо
известные работы по проведению кодирования – декодирования сигнала в линии на
основе микропроцессорных преобразователей здесь основными быть уже не могут,
хотя и очень важны для понимания реальных процессов
компьютерного применения предлагаемых систем кодирования информации.
Конечно,
очень бы хотелось изучить методики расчетов коэффициентов помехоустойчивости
для применяемых систем счисления в части обнаружения и исправления ошибок
приема-передачи только средствами, основанными на свойствах этих систем. Тем
более, что никакие применяемые сегодня рациональные
системы счисления этими свойствами не обладают в принципе.
Полученная
информация может позволить оценить эффективность и своевременность появления и
применения компьютера Фибоначчи в современных условиях.
И вопрос
не в количестве разрядов процессора, это, как раз, вполне решаемая сегодня
задача. И не в длине машинного слова, это сегодня уже совсем непринципиально.
Решающими
факторами в современном компьютере являются все же оптимальная и
сбалансированная архитектура, как процессора, так и всего компьютера в целом.
Надежность и хорошая унификация всех его составляющих. В том числе и схемных
решений. И конечно, сбалансированный набор применяемых систем счисления.
Уникальные и единичные решения, даже лучшие, надо оценивать, прежде всего, с
этой точки зрения, как мне кажется. И уникальность тут не всегда оказывается
лучшим решением.
Скорее
всего, есть необходимость оценить реальную надежность кодирования информации в
системе Бергмана. Возможное снижение затрат на обеспечение защиты от ошибок
всех видов. А так же применение криптографических методов защиты информации,
возможных в этой системе кодирования на основе избыточности кодирования.
Кажется, об этом говорилось в предыдущих статьях А.П.Стахова.
Если же
учесть, что при применении компьютера Фибоначчи программные приложения придется
разрабатывать почти с «чистого листа», то его преимущества должны быть вполне
очевидны, хотя бы в перспективе.
Понятно,
что сегодня для создания конкуренции компьютерам с двоичной системой нужны
очень веские основания и видимые преимущества.
В прошлых
публикациях А.П.Стахова отрывочная информация о
компьютере Фибоначчи сводилась к классической архитектуре 70-80 годов прошлого
века. Центральный процессор, окружающее оборудование, устройства ввода-вывода
информации, исполнительные устройства.
Сегодня,
похоже, устарела и эта стратегия, и методы её реализации. Особенно в части
центрального процессора. Потому, что даже в компьютерах массового пользования
мы видим переход на многоядерную стратегию. Нейрокомпьютеры предлагают еще
большую децентрализацию вычислений. Количество процессоров в компьютере
неудержимо растет. Сегодня их число уже перевалило за 256 и это не предел.
Правда,
суперкомпьютеры продолжают строить по канонам классической архитектуры, и это
пока дает результат. Но, вряд ли кто рискнет применить в суперкомпьютере
неотработанные технологии Ф-кода.
Видимо,
надо находить свою нишу в архитектурных вариациях построения компьютера с
использованием найденных преимуществ Ф-кода. В том числе и применение в
процессоре дробной части, не применяемой сегодня в двоичной технике. Вопрос не
в экзотике, а в открывающихся возможностях. Никто пока не делал оценки этого
пути.
С другой
стороны, необходимо, видимо, провести унификацию и согласование применения в
компьютере разных систем счисления и кодирования на основе Ф-кода. Техника с
трудом понимает уникальные решения, она, как мне кажется, лучше работает со
стандартными техническими решениями, общими для данной сферы.
Понятно,
что это вопрос спорный, требующий всесторонней оценки.
Но,
сначала хотелось бы понять, что сделано, что есть, что составляет базу для
дальнейших оценок.
Литература:
Никитин А.В., Компьютеры Фибоначчи. Продолжение …
// «Академия Тринитаризма», М., Эл № 77-6567,
публ.16813, 02.09.2011