Вычисления с произвольной точностью

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Вычисления с произвольной точностью

Post by Mac Buster »

Время от времени я мысленно возвращаюсь к идее реализации троичного процессора для выполнения вычислений с произвольной точностью, которая была высказана мной в четвёртом выпуске издания NedoPC. Напомню свою основную мысль.

Программно или аппаратно реализуется простейший микропроцессор содержащий определённый объём оперативной памяти разделённой на несколько частей. Первая из них - операционная, предназначена для хранения промежуточных результатов вычислений. Вторая - описательная - хранит ссылки-описатели значений. Каждый описатель имеет фиксированный размер и в свою очередь состоит из двух частей и записывается следующим образом: [P:L], где P - указатель, или, другими словами, порядковый номер троичного разряда отсчитываемый от начала третьей части оперативной памяти - собственно хранилища данных; L - количество разрядов в числе. Таким образом вычисления с числами сводятся к извлечению из описательной части ссылок-описателей с последующим выполнением арифметических операций над данными, на которые ссылается описатель. Четвёртая часть памяти предназначена для хранения выполняемых процессором команд.

В распоряжение программиста предоставляется набор регистров:

указатель текущей команды - PC,
указатель стека - SP,
три регистра-указателя - X, Y и Z,
регистр состояния процессора - CF,
набор вспомогательных регистров - Rx.

Где регистры-указатели X, Y и Z имеют ту же разрядность, что и ссылки-описатели чисел. Регистры X и Y предназначены для хранения указателей на описатели операндов выполняемой арифметической операции, после выполнения операции в регистр Z будет помещён описатель результата. Вспомогательные регистры могут быть использованы для выполнения команд, напрямую не относящихся к выполнению вычислений.

Далее приводится примерный перечень групп команд, которые выполняет процессор:

1.Пересылка данных
- Чтение из памяти в регистр
- Запись из регистра в память
- Пересылка из регистра в регистр

2.Арифметика
- Сложение
- Вычитание
- Умножение
- Деление
- Сравнение чисел
- Определение знака числа
- Определение чётности числа
- Выделение целой части числа
- Выделение дробной части числа
- Смена знака числа
- Округление числа

3.Логика
- Max
- Min
- Mean
- Shift up
- Shift down

4.Управление выполнением программы
- Условный переход
- Безусловный переход
- Условный вызов подпрограммы
- Безусловный вывоз подпрограммы
- Возврат из подпрограммы

5.Управление процессором
- Останов
- Выдача значения регистра
- Управление режимами прерываний

Так же есть примерное описание синтаксиса языка программирования низкого уровня, который основан на идее программирования в содержательных обозначениях, т.е. использует общепринятые обозначения для большинства арифметических операций ;)
sva

Re: Вычисления с произвольной точностью

Post by sva »

овчинка выделки не стоит
данный способ (построение поразрядных вычислителей) в настоящее время не применим - мы рассматривали возможность построения минимального процессора с подобной последовательной обработкой данных (хотя рассматривался двоичный способ кодирования но суть та же) и уперлись в то что для реализации подобного механизма нужна особая память. в настоящее время подобнго рода память слишком медленная. если же использовать обычную память то целесообразно извлекать данные большой разрядности а если так то на преобразованя к последоватльному виду и обратно идут слишком большие издержки

хотя следует отметить что реализация подобных вычислительных элементов едва ли не единственный способ построения действительно многоядерных систем с легким масштабированием.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Вычисления с произвольной точностью

Post by Shaos »

т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...
sva

Re: Вычисления с произвольной точностью

Post by sva »

Shaos wrote: т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...
разрядность более 1 ставит жирный крест на многоядерности (точнее сильно ее ограничивает)
так что применение такого чипа - это калькулятор или сверх-малопотребляющие решения вроде умных датчиков.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Вычисления с произвольной точностью

Post by Mac Buster »

т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)
Ну это уже решать разработчику при конкретной реализации, я никаких ограничений не ставлю :)
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...
Да, думаю это не страшно. Потери в 2-3 разряда на десяток, не критично.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Вычисления с произвольной точностью

Post by Mac Buster »

разрядность более 1 ставит жирный крест на многоядерности (точнее сильно ее ограничивает) так что применение такого чипа - это калькулятор или сверх-малопотребляющие решения вроде умных датчиков.
Собственно, упоминание о чипе для калькулятора и стало основной причиной повторной публикации описания идеи реализации простейшего троичного процессора для вычислений с произвольной точностью.

P.S. Забыл упомянуть о некоторых вопросах вроде процедур начального пуска и перезапуска, ввода и вывода данных, и способах определения типов операндов.
sva

Re: Вычисления с произвольной точностью

Post by sva »

что касается калькулятора то теоретически самым удобным было бы использовать 3х-разрядный МК, НО

лучше спроектировать 1трайтный (по моему разумению 6 разрядов) это не столько для ускорения вычислений сколько для того чтобы сделать более универсальное процессорное ядро и отработать на нем определенные аппаратные решения более сложные нежени требуются в калькулаторе. потому что в калькулаторе используется в основном N-10я систем счисления и метод вычисления цифра за цифрой а там немного другая математика.

вообще сообществу не помешало бы заинтересовать математика (алгоритмиста) это было бы существенной помощью в решении многих задач.
потому что очевидно что для многих библиотечных функций востребованых в микроэлетроники алгоритмы ускоренных операций зависят от представления и нуждаются в корректировках стандартных алгоритмов.
я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Вычисления с произвольной точностью

Post by Mac Buster »

вообще сообществу не помешало бы заинтересовать математика (алгоритмиста) это было бы существенной помощью в решении многих задач.
Я пытался это сделать, но у математиков есть нехорошее свойство - тратить всё время на изучение одного из 95 аспектов, начисто игнорируя все остальные. Широкопрофильные усидчивые математики мне пока не попадались :)
потому что очевидно что для многих библиотечных функций востребованых в микроэлетроники алгоритмы ускоренных операций зависят от представления и нуждаются в корректировках стандартных алгоритмов.
Этот вопрос я поднимал на конференции.
я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.
Я бы не стал так обобщать ;)
sva

Re: Вычисления с произвольной точностью

Post by sva »

я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.
Я бы не стал так обобщать ;)
извините, если кого обидел но для получения серьезных алгоритмических преимуществ нужно владеть широким спектром методов - а для этого ндо более-менее глубоко заниматься матемтикой. лично у меня таких знаний нет (во вском случая свои я достаточными не нахожу).