nedoPC.org

Community of electronics hobbyists established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 21 Apr 2021 11:54



Reply to topic  [ 169 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12
Троичная ЭВМ "Сетунь" (1958) 
Author Message
Novelist

Joined: 16 Jun 2018 15:35
Posts: 25
Reply with quote
askfind, большое спасибо за разъяснение по адресации и переходам.
(оффтоп от сетуни:)
по поводу BCTD это элементарное представление троичного числа битами: каждый трит кодируется 2мя битами, 1 бит отвечает за положительность трита, другой за отрицательность, для ускорения операций сдвига чередование положительных и отрицательных бит происходит не для каждого трита, а для целой последовательности из 9 тритов представляющих трайт.
BCTD EOF - переменное содержимое последних 2-3 байт, во первых длинна BCTD файла может быть строго из значений "2N + (N+3)/4", во вторых само значение, вернее битовая маска EOF варьируется в зависимости от длины файла, что сразу собой представляет и сигнатуру и своеобразную контрольную сумму.
Есть еще PBCTD, отличие упакованного представления то, что каждый трайт кодируется переменным числом битов, минимальным и достаточным для однозначного определения всех тритов трайта, т.е. первые 9 бит кодируют положительность тритов трайта, а вот следующие биты кодируют только триты значение которых не однозначно (т.е. только те, которые могут быть либо нулевыми либо отрицательными), EOF в PBCTD кодируется набором битов недостаточным для определения трайта, т.е. последовательностью от 1 до 17 нулевых битов, берется максимально возможная последовательность таких нулевых битов, чтобы поместиться на границу байта.
PBCTD представление может быть удобным для передачи по сети, в то время как для эмуляции максимально быстрое представление BCTD, опять же оно максимально быстрое только в сдвиговых операциях (т.е. в умножении и делении на степени тройки), остальные же операции будут эмулироваться десятком или несколькими десятками бинарных операций, что конечно не медленнее других представлений, но и не очень то быстрее.
Где конкретно первоисточники этих форматов? не знаю. там и сям. частично даже на этом форуме.


27 Feb 2021 15:11
Profile
Maniac
User avatar

Joined: 04 Jan 2016 10:15
Posts: 239
Location: Russia, S.- Peterburg
Reply with quote
ProMiNick wrote:

BCTD это элементарное представление троичного числа битами: каждый трит кодируется 2мя битами, 1 бит отвечает за положительность трита, другой за отрицательность, для ускорения операций сдвига чередование положительных и отрицательных бит происходит не для каждого трита, а для целой последовательности из 9 тритов представляющих трайт.

BCTD EOF - переменное содержимое последних 2-3 байт, во первых длинна BCTD файла может быть строго из значений "2N + (N+3)/4", во вторых само значение, вернее битовая маска EOF варьируется в зависимости от длины файла, что сразу собой представляет и сигнатуру и своеобразную контрольную сумму.

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


Не прояснил для себя введения Вами несколько сущностей. Где посмотреть программный код объявления типов данных для тритов и трайтов?


Мне было важно использовать определения, которые легко обрабатывать двоичными ARM процессорами.


В работе Рамиль Альварес Х. Алгоритмы троичной арифметики. – М.,Фонд «Новое тысячелетие», 2012. – 20 с. были предложены троичных типы данных:

Code:
/* Тип данных троичное целое число */
typedef struct trin {
    int n;
    int trit[18];
} trit_t;

/* Тип данных троичное с плавающей запятой */
struct ftrin {
   int8_t n[5];
   int8_t trit[15];
};


Попробовал эту версию. Удобно для программистов. Наглядно, легко анализировать исходный код. Тип данных 'int' - классический для всех микроконтроллеров. Недостатки - медленная работа с тритами в числе.


В проекте симулятора "Сетунь-1958" просмотрел несколько статей, где были предложены троичных типов данных.
Остановился на версии представлении трита двумя битами.

Code:
/**
 * Типы данных для виртуальной троичной машины "Сетунь-1958"
 */
typedef uint32_t trishort;
typedef uint64_t trilong;
typedef uintptr_t addr;

typedef struct trs {
   uint8_t  l;         /* длина троичного числа в тритах         */
   trilong tb;       /* двоичное битовое поле троичного числа    */
} trs_t;


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


Attachments:
Ternary arithmetic algorithms.pdf [812.53 KiB]
Downloaded 22 times

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
28 Feb 2021 02:24
Profile WWW
Novelist

Joined: 16 Jun 2018 15:35
Posts: 25
Reply with quote
Code:
/* Тип данных BCTD */
struct tryte
{
  uint16 positive : 9;
  uint16 negative : 9;
};

/* Тип данных BCTD */
struct trites
{
  uint8 pos1 : 1;
  uint8 pos2 : 1;
  uint8 pos3 : 1;
  uint8 pos4 : 1;
  uint8 pos5 : 1;
  uint8 pos6 : 1;
  uint8 pos7 : 1;
  uint8 pos8 : 1;
  uint8 pos9 : 1;
  uint8 neg1 : 1;
  uint8 neg2 : 1;
  uint8 neg3 : 1;
  uint8 neg4 : 1;
  uint8 neg5 : 1;
  uint8 neg6 : 1;
  uint8 neg7 : 1;
  uint8 neg8 : 1;
  uint8 neg9 : 1;
};

не силен я в высокоуровневых языках, кажется так определяются битовые поля
оба варианта собственно и есть 18 бит на 1 трайт, по 2 бита на трит.

(я собрался реализовывать под х86, но полезную логику переписать под ARMv4,ARMv5 и ARMv8 смогу, но интерфейс взаимодействия с пользователем и с ОС на армах это не ко мне - под полезной логикой имеется в виду только эмуляция(троичные операции над этими типами) и ничего кроме)


28 Feb 2021 03:21
Profile
Maniac
User avatar

Joined: 04 Jan 2016 10:15
Posts: 239
Location: Russia, S.- Peterburg
Reply with quote
Birchpunk, [03.04.21 11:58]

Ячейки первой «Сетуни» в работали двухбитном троичном коде, то есть один трит записывался в два двоичных разряда, четвёртое состояние двух двоичных разрядов не использовалось. Состояние каждого разряда на пульте управления отображалось двумя лампочками, а четвёртая комбинация (1, 1) не использовалась.

Кстати, в мире Birchpunk троичная логика получила широкое распространение, и все ЭВМ и прошивка роботов (даже Глаша!) тоже основаны на троичной логике, что породило ругательно-экспрессивное междометие «Триты-биты».

Кроме того, использование троичной логики помогло решить множество сложнейших вопросов человечества. В частности, прорыв был совершён в области квантовой механики – у кота Шрёдингера, всё отлично, уверяем вас. Наконец-то был решён философский вопрос со стаканом – он изначально был не только наполовину полон или наполовину пуст!

Birchpunk, [03.04.21 11:58]
Влияние было оказано даже на антропологию и культуру. Трайт из 6 тритов принято интерпретировать как целое число в диапазоне от -364 до 364. Поэтому день программиста отмечают дважды – 1 января и 30 декабря. Ходят слухи, что некоторые программисты даже не успевают сделать перерыв!

#BirchPunk #BirchPunkLore #Setun

Читай полную версию в новой рубрике #BirchPunkLore эксклюзивно в нашем канале Телеграмма.
https://t.me/birchpunkofficial/6


Attachments:
yY9ylsvlQFQ.jpg
yY9ylsvlQFQ.jpg [ 913.71 KiB | Viewed 149 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
05 Apr 2021 22:24
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 169 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  

Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.