Табличные N-ричные сумматоры на Бэйсике

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Re: Табличный однотритный троичный асимметричный полный сумм

Post by AndrejKulikov »

Более быстрая версия троичного ассиметричного табличного сумматора:
TernaryAdder16-tritUnsigned2.JPG
Замена вычисления символа суммы на вычисление величины суммы и вынос сборки строки суммы за пределы цикла суммирования в подпрограмму вывода результата уменьшило время суммирования приблизительно со 104-х до 89-ти микросекунд, т.е. приблизительно на 15-ть микросекунд (на 15,6%).

Code: Select all

'16 trit ternary asymmetric adder in symbol system (0,1,2)
CLS
COLOR 10,0

'adder initialisation
dim F2TN1B307318912%(2,2,1),F2TN1B193099216%(2,2,1)
F2TN1B307318912$="210102021102021210"
F2TN1B193099216$="111110100110100000"

for k%=0 to 1
  for j%=0 to 2
    for i%=0 to 2
      n%=i%+j%*3+k%*9
      F2TN1B307318912%(i%,j%,k%)=VAL(MID$(F2TN1B307318912$,18-n%,1))
      F2TN1B193099216%(i%,j%,k%)=VAL(MID$(F2TN1B193099216$,18-n%,1))
    next i%
  next j%
next k%
'PRINT

'input numbers
'   6543210987654321
A$="1111110020022110"
B$="1111110020010100"
PRINT A$
PRINT B$
PRINT"----------------"

DIM A%(15),B%(15)
FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

DIM S%(15)
C%=0

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F2TN1B307318912%(A%(I%),B%(I%),C%)
  C%    =F2TN1B193099216%(A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime% = MTIMER

FOR I%=15 TO 0 STEP -1
  PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT
PRINT

PRINT "MTIMER =";ElapsedTime%;"microseconds,";
FPOPS=1000000/ElapsedTime%
PRINT USING "####### FPOPS";FPOPS
END

You do not have the required permissions to view the files attached to this post.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Табличный троичный симметричный сумматор

Post by AndrejKulikov »

Последовательный табличный троичный симметричный сумматор устроен и работает почти также, как и последовательный табличный асимметричный сумматор, только в таблице 27 столбцов, а не 18, знак "2" означает не двойку, а не "-1", строки младшего и старшего значащих разрядов суммы другие, соответственно другие и номера троичных тринарных функций.
A 210210210210210210210210210 первое суммируемое
B 222111000222111000222111000 второе суммируемое
C 222222222111111111000000000 перенос из предыдущего разряда
----------------------------------------------
S 021210102210102021102021210 = F3TS220124311691710 младший значащий разряд суммы
C 202222200111011010200010000 = F3TS592772221550710 старший значащий разряд суммы, перенос в следующий разряд.
По вышеприведённой таблице на Turbo Basic'е была написана программа последовательного суммирования двух 16-ти разрядных (16-ти тритных) чисел, скриншот которой приведён ниже:
TernarySymmetricAdder.JPG
В первой строке - первое суммируемое (положительное или отрицательное) в троичном симметричном коде с заменой знака "-1" на знак "2".
Во второй строке - второе суммируемое (положительное или отрицательное) в троичном симметричном коде с заменой знака "-1" на знак "2".
В третьей строке - сумма (положительная или отрицательная) в троичном симметричном коде с заменой знака "-1" на знак "2".
В четвёртой строке - время выполнения суммирования в микросекундах (почти такое же, как и в ассиметричном табличном троичном сумматоре).

Code: Select all

CLS
COLOR 10,0

'adder initialisation
dim F3TS2201243116917%(2,2,2),F3TS5927722215507%(2,2,2)
'                   765432109876543210987654321
F3TS2201243116917$="021210102210102021102021210"
F3TS5927722215507$="202222200111011010200010000"

for k%=0 to 2
  for j%=0 to 2
    for i%=0 to 2
      n%=i%+j%*3+k%*9
      F3TS2201243116917%(i%,j%,k%) = VAL(MID$(F3TS2201243116917$,27-n%,1))
      F3TS5927722215507%(i%,j%,k%) = VAL(MID$(F3TS5927722215507$,27-n%,1))
    next i%
  next j%
next k%

'PRINT F3TS2201243116917$
'PRINT F3TS5927722215507$
'PRINT

'input numbers
'   6543210987654321
A$="1111002002001001"
B$="1111001002002001"
C%=0
PRINT A$
PRINT B$
PRINT "----------------"

DIM A%(15),B%(15),S%(15)

FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F3TS2201243116917%(A%(I%),B%(I%),C%)
  C%    =F3TS5927722215507%(A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime=MTIMER

FOR I%=15 TO 0 STEP -1
PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT
PRINT

PRINT "Elapsed time=";ElapsedTime

END
Диапазон сумм от 22222222222222223 ("2" означает "-1") = -21 523 36010 до 11111111111111113 = 21 523 36010 равен 2*21 523 36010 + 1 = 43 046 72110.
Следует отметить, что программные сумматоры дешевле аппаратных сумматоров и могут найти применение в бюджетных моделях класса "эконом".
You do not have the required permissions to view the files attached to this post.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Re: Табличный троичный симметричный сумматор

Post by AndrejKulikov »

Табличный двоичный последовательный сумматор
A 10101010 первое слагаемое
B 11001100 второе слагаемое
C 11110000 бит переноса из предыдущего разряда
---------------
S 10010110 = F3B15010 сумма по модулю 2
C 11101000 = F3B23210 бит переноса в следующий разряд
По вышеприведённой таблице истинности полного (трёхоперандного) двоичного одноразрядного последовательного сумматора на Turbo Basic'е была написана программа последовательного сложения двух положительных 16-ти разрядных (16-ти битных) двоичных чисел без знака.

Code: Select all

CLS
COLOR 10,0

dim F3B150%(1,1,1),F3B232%(1,1,1)
'        87654321
F3B150$="10010110"
F3B232$="11101000"

for k%=0 to 1
  for j%=0 to 1
    for i%=0 to 1
      n%=i%+j%*2+k%*4
      F3B150%(i%,j%,k%) = VAL(MID$(F3B150$,8-n%,1))
      F3B232%(i%,j%,k%) = VAL(MID$(F3B232$,8-n%,1))
    next i%
  next j%
next k%

'PRINT F3B150$
'PRINT F3B232$
'PRINT

'   6543210987654321
A$="0111001001000001"
B$="0111001001001000"
C%=0
PRINT A$
PRINT B$
PRINT "----------------"

DIM A%(15),B%(15),S%(15)

FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F3B150%(A%(I%),B%(I%),C%)
  C%    =F3B232%(A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime=MTIMER

FOR I%=15 TO 0 STEP -1
PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT
PRINT

PRINT "Elapsed time=";ElapsedTime

END
Ниже приведён скриншот результата выполнения программы:
BinaryAdder.JPG
В первой строке - первое слагаемое.
Во второй строке - второе слагаемое.
В третьей строке - сумма.
В четвёртой строке - время выполнения суммирования в микросекундах.
Диапазон сумм от 0 до 11111111111111112 = 65 53510 равен 65 53510 + 1 = 65 53610.
Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины основания системы счисления.
3. Приблизительно при одном и том же времени суммирования диапазон сумм (мощность множества сумм) последовательного табличного троичного симметричного 16-ти тритного сумматора в 43 046 721/65 536 = 656,8 раза (почти на 3 порядка) больше (мощнее) диапазона сумм (мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на троичную симметричную систему может существенно (почти на 3 порядка) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.
You do not have the required permissions to view the files attached to this post.
Last edited by AndrejKulikov on 05 Oct 2018 21:16, edited 2 times in total.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Табличный четверичный сумматор

Post by AndrejKulikov »

Ниже приведена таблица истинности четверичного полного (трёхоперандного, трёхаргументного) сумматора, который представляет из себя две тринарные четверичные функции: суммы по модулю 4 - F3QuadroS и переноса в следующий разряд - F3QuadroC:

A 3210321032103210 3210321032103210 3210321032103210
B 3333222211110000 3333222211110000 3333222211110000
C 2222222222222222 1111111111111111 0000000000000000
---------------------------------------------------------------------------------
S 0321321021031032 3210210310320321 2103103203213210 = F3QuadroS
C 2111111111101100 1111111011001000 1110110010000000 = F3QuadroC

Так как в разряде переноса не бывает значений больше 2-х, то таблица имеет 48-мь колонок, а не 64-ре колонки.

По вышеприведённой таблице истинности на Turbo Basic'е была написана программа последовательного сложения двух 16-ти разрядных (16-ти квадритных) целых чисел без знака:

Code: Select all

CLS
COLOR 10,0

'adder initialisation
dim F3QSumMod%(3,3,2),F3QCarry%(3,3,2)
'           876543210987654321098765432109876543210987654321
F3QSumMod$="032132102103103232102103103203212103103203213210"
F3QCarry$ ="211111111110110011111111110010001110110010000000"

for k%=0 to 2
  for j%=0 to 3
    for i%=0 to 3
      n%=i%+j%*4+k%*16
      F3QSumMod%(i%,j%,k%) = VAL(MID$(F3QSumMod$,48-n%,1))
      F3QCarry% (i%,j%,k%) = VAL(MID$(F3QCarry$, 48-n%,1))
    next i%
  next j%
next k%

'input numbers
'   6543210987654321
A$="0002002003003003"
B$="0001002001002003"
C%=0
PRINT A$
PRINT B$
PRINT "----------------"

DIM A%(15),B%(15),S%(15)

FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F3QSumMod%(A%(I%),B%(I%),C%)
  C%    =F3QCarry% (A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime=MTIMER

FOR I%=15 TO 0 STEP -1
PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT
PRINT

PRINT "Elapsed time=";ElapsedTime;"microseconds"

END
Результат выполнения программы приведён на скриншоте ниже:
QuadroAdder.JPG
В первой строке на скриншоте - первое слагаемое.
Во второй строке на скриншоте - второе слагаемое.
В третьей строке на скриншоте - сумма.
В четвёртой строке на скриншоте - время выполнения операции сложения в микросекундах.

При 16-ти четверичных разрядах диапазон сумм (мощность множества сумм) от 0 до 4 294 967 295 равен 4 294 967 295 + 1 = 4 294 967 296, т.е.
в 4 294 967 296/65 536 = 65 536 раз (почти на пять порядков) больше (мощнее), чем
в табличном двоичном 16-ти разрядном (16-ти битном) последовательном сумматоре в двоичной системе счисления,
в 4 294 967 296/21 523 361 = 199,5 раза больше (мощнее), чем в табличном троичном несимметричном
16-ти разрядном (16-ти тритном) последовательном сумматоре в троичной несимметричной системе счисления
и
в 4 294 967 296/43 046 721 = 99,8 раза (почти на два порядка) больше (мощнее), чем в табличном троичном симметричном
16-ти разрядном (16-ти тритном) последовательном сумматоре в троичной симметричной системе счисления
.

Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины основания системы счисления.
3. Приблизительно при одном и том же времени суммирования диапазон сумм (мощность множества сумм) последовательного табличного четверичного 16-ти квадритного сумматора в 4 294 967 296/65 536 = 65 536 раз (почти на пять порядков) больше (мощнее) диапазона сумм (мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на четверичную систему может существенно (почти на 5 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.
You do not have the required permissions to view the files attached to this post.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Табличный восьмиричный сумматор

Post by AndrejKulikov »

Ниже приведена таблица истинности полного (тринарного, трёхоперандного,
трёхаргументного) восьмиричного сумматора:
A 7654321076543210765432107654321076543210765432107654321076543210->
B 7777777766666666555555554444444433333333222222221111111100000000->
C 1111111111111111111111111111111111111111111111111111111111111111->
-----------------------------------------------------------------------------------------------------------
S 7654321065432107543210764321076532107654210765431076543207654321->
C 1111111111111110111111001111100011110000111000001100000010000000->

A ->7654321076543210765432107654321076543210765432107654321076543210
B ->7777777766666666555555554444444433333333222222221111111100000000
C ->0000000000000000000000000000000000000000000000000000000000000000
------------------------------------------------------------------------------------------------------------
S ->6543210754321076432107653210765421076543107654320765432176543210 = F3OctalS
C ->1111111011111100111110001111000011100000110000001000000000000000 = F3OctalC

Так как в разряде переноса не бывает значения больше 1, то таблица имеет всего
8*8*2=128 колонок.
По вышеприведённой таблице истинности на Turbo Basic'е была написана программа
табличного последовательного восьмиричного 16-ти разрядного (16-ти октитного)
сумматора и сложены два 16-ти разрядных (16-ти октитных) целых числа без знака:

Code: Select all

CLS
COLOR 10,0

'adder initialisation
dim F3OSumMod%(7,7,1),F3OCarry%(7,7,1)

F3OSumMod$="7654321065432107543210764321076532107654210765431076543207654321_
6543210754321076432107653210765421076543107654320765432176543210"
F3OCarry$ ="1111111111111110111111001111100011110000111000001100000010000000_
1111111011111100111110001111000011100000110000001000000000000000"

for k%=0 to 1
  for j%=0 to 7
    for i%=0 to 7
      n%=i%+j%*8+k%*64
      F3OSumMod%(i%,j%,k%) = VAL(MID$(F3OSumMod$,128-n%,1))
      F3OCarry% (i%,j%,k%) = VAL(MID$(F3OCarry$, 128-n%,1))
    next i%
  next j%
next k%

'PRINT F3OSumMod$
'PRINT F3OCarry$
'PRINT

'input numbers
'   6543210987654321
A$="0003003004004005"
B$="0003004003004004"
C%=0
PRINT A$
PRINT B$
PRINT "----------------"

DIM A%(15),B%(15),S%(15)

FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F3OSumMod%(A%(I%),B%(I%),C%)
  C%    =F3OCarry% (A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime=MTIMER

FOR I%=15 TO 0 STEP -1
PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT
PRINT

PRINT "Elapsed time=";ElapsedTime;"microseconds"

END
Результат выполнения программы приведён на скриншоте ниже:
OctalAdder.JPG
В первой строке на скриншоте - первое слагаемое.
Во второй строке на скриншоте - второе слагаемое.
В третьей строке на скриншоте - сумма.
В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти октитного сложения в микросекундах.

Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины основания системы счисления и количества переносов при суммировании.
3. Приблизительно при одном и том же времени суммирования диапазон сумм (мощность множества сумм) последовательного табличного восьмиричного 16-ти октитного сумматора в 8^16/2^16 = 4^16 = 4 294 967 296 раз (почти на 9,5 порядков) больше (мощнее) диапазона сумм (мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на восьмиричную систему счисления может существенно (почти на 9,5 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.
You do not have the required permissions to view the files attached to this post.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Табличный десятичный сумматор

Post by AndrejKulikov »

Ниже приведена таблица истинности десятичного полного (тринарного, трёхаргументного, трёхоперандного) сумматора:

A 9876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210->
B 9999999999888888888877777777776666666666555555555544444444443333333333222222222211111111110000000000->
C 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111->
------------------------------------------------------------------------------------------------------------------------------------------------------------------
S 9876543210876543210976543210986543210987543210987643210987653210987654210987654310987654320987654321->
C 1111111111111111111011111111001111111000111111000011111000001111000000111000000011000000001000000000->

A 9876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210
B 9999999999888888888877777777776666666666555555555544444444443333333333222222222211111111110000000000
C 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
------------------------------------------------------------------------------------------------------------------------------------------------------------------
S 8765432109765432109865432109875432109876432109876532109876542109876543109876543209876543219876543210= F3DecimalS
C 1111111110111111110011111110001111110000111110000011110000001110000000110000000010000000000000000000= F3DecimalC

Так как третий аргумент (C, "перенос в следующий разряд") не бывает больше 1, то таблица имеет всего 10*10*2=200 колонок.

По вышеприведённой таблице на Turbo Basic'е была написана программа табличного последовательного полного десятичного сумматора и сложены два 16-ти разрядных (16-ти децитных) целых числа без знака:

Code: Select all

CLS
COLOR 10,0

'adder initialisation
dim F3DSumMod%(9,9,1),F3DCarry%(9,9,1)
F3DSumMod$="98765432108765432109765432109865432109875432109876432109876532109876542109876543109876543209876543218765432109765432109865432109875432109876432109876532109876542109876543109876543209876543219876543210"
F3DCarry$ ="11111111111111111110111111110011111110001111110000111110000011110000001110000000110000000010000000001111111110111111110011111110001111110000111110000011110000001110000000110000000010000000000000000000"

for k%=0 to 1
  for j%=0 to 9
    for i%=0 to 9
      n%=i%+j%*10+k%*100
      F3DSumMod%(i%,j%,k%) = VAL(MID$(F3DSumMod$,200-n%,1))
      F3DCarry% (i%,j%,k%) = VAL(MID$(F3DCarry$, 200-n%,1))
    next i%
  next j%
next k%

'input numbers
'   6543210987654321
A$="0009009009009009"
B$="0005006007008009"
C%=0
PRINT A$
PRINT B$
PRINT "----------------"

DIM A%(15),B%(15),S%(15)

FOR I%=0 TO 15
  A%(I%)=VAL(MID$(A$,16-I%,1))
  B%(I%)=VAL(MID$(B$,16-I%,1))
NEXT I%

MTIMER
'adding
FOR I%=0 TO 15
  S%(I%)=F3DSumMod%(A%(I%),B%(I%),C%)
  C%    =F3DCarry% (A%(I%),B%(I%),C%)
NEXT I%
ElapsedTime=MTIMER

FOR I%=15 TO 0 STEP -1
PRINT CHR$(S%(I%)+&H30);
NEXT I%
PRINT

PRINT USING "Elapsed time=### microseconds    ";ElapsedTime

END
Результат выполнения программы приведён на скриншоте ниже:
DecimalAdder.JPG
В первой строке на скриншоте - первое слагаемое.
Во второй строке на скриншоте - второе слагаемое.
В третьей строке на скриншоте - сумма.
В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти децитного сложения
в микросекундах (те же самые 88 микросекунд).

Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число
приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных
задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины
основания системы счисления и количества переносов при суммировании
.
3. Приблизительно при одном и том же времени суммирования (те же самые 88 микросекунд) диапазон сумм (мощность множества сумм)
последовательного табличного десятичного 16-ти децитного сумматора
в 10^16/2^16 = 5^16 = 152 587 890 625 раз (более чем на 11 порядков) больше (мощнее) диапазона сумм
(мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на десятичную систему счисления может существенно
(более чем на 11 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел
даже на существующих двоичных контроллерах и двоичных компьютерах.
You do not have the required permissions to view the files attached to this post.
Last edited by AndrejKulikov on 10 Oct 2018 23:24, edited 3 times in total.
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Табличный десятичный сумматор

Post by Shaos »

Ваша задача заполнить вашими N-ричными табличными сумматорами всю первую страницу этого форума?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: Табличный десятичный сумматор

Post by Mixa64 »

На скриншоте по факту сложение в 8-ричной системе получилось. Но, учитывая общую странность изначальных посылов, это, наверное, не так важно. Главное - арифметическая корректность одного примера, пусть он и 8-ричный вышел.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Табличный десятичный сумматор

Post by Lavr »

AndrejKulikov wrote:В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти децитного сложения
в микросекундах (те же самые 88 микросекунд).
Я посмотрел все 3 поста про "Табличный N-ичный сумматор": в 2-х постах "88 микросекунд",
а в одном - "89 микросекунд". Но я нигде не увидел хотя бы тактовую частоту процессора
на котором проводились вычисления. Много это, или мало "88 (89) микросекунд" ?

И Mixa64 - прав, чисто на взгляд выглядит, действительно, как сложение в системе с основанием 8.
Слева направо:
5 + 4 = 11 (перенос 1)
0 + 0 + перенос 1 = 1
0 + 0 = 0
4 + 4 = 10 (перенос 1)
и т.д.
кул.png
You do not have the required permissions to view the files attached to this post.
iLavr
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Re: Табличный десятичный сумматор

Post by AndrejKulikov »

Mixa64 wrote:На скриншоте по факту сложение в 8-ричной системе получилось. Но, учитывая общую странность изначальных посылов, это, наверное, не так важно. Главное - арифметическая корректность одного примера, пусть он и 8-ричный вышел.
Действительно 8-миричный и название файла скриншота: OctalAdder.JPG. Загрузил скриншот DecimalAdder.JPG. Спасибо за внимательность.
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Re: Табличный десятичный сумматор

Post by AndrejKulikov »

Lavr wrote: Я посмотрел все 3 поста про "Табличный N-ичный сумматор": в 2-х постах "88 микросекунд",
а в одном - "89 микросекунд". Но я нигде не увидел хотя бы тактовую частоту процессора
на котором проводились вычисления. Много это, или мало "88 (89) микросекунд" ?
Из описания Turbo Basic'а:
"MTIMER использует канал 2 чипа таймера 8255.
Внутренняя точность MTIMER около двух микросекунд [т.е. +/- 1 микросекунда], однако точность
быстро падает, если измеряемое время превышает 54 миллисекунды."

Таковая частота процессора данного компьютера во время проведения опытов не изменялась.
На других компьютерах с другими процессорами и с другими тактовыми частотами числа будут
другими (не 88 микросекунд), но приблизительно одинаковыми.

Параллельный аппаратный сумматор процессора суммирует значительно быстрее, но программный
табличный сумматор значительно дешевле аппаратного и может найти применение в бюджетных
моделях микроконтроллеров и компьютеров класса "эконом".

В моделях с аппаратным сумматором при выходе из строя аппаратного сумматора можно переключиться
на дополнительный программный табличный сумматор, что повысит надёжность всей системы.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Табличный десятичный сумматор

Post by Lavr »

AndrejKulikov wrote:
Lavr wrote: Я посмотрел все 3 поста про "Табличный N-ичный сумматор": в 2-х постах "88 микросекунд",
а в одном - "89 микросекунд". Но я нигде не увидел хотя бы тактовую частоту процессора
на котором проводились вычисления. Много это, или мало "88 (89) микросекунд" ?
Таковая частота процессора данного компьютера во время проведения опытов не изменялась.
На других компьютерах с другими процессорами и с другими тактовыми частотами числа будут
другими (не 88 микросекунд), но приблизительно одинаковыми.
Так какова же частота "процессора данного компьютера во время проведения опытов" ?
Поскольку 88 микросекунд при неизвестной частоте процессора ни о чем не говорит.

Вопрос поставлен так, поскольку для современных процессоров с частотой 1...2 ГГц время
88 микросекунд кажется весьма значительным.
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Табличные N-ричные сумматоры на Бэйсике

Post by Shaos »

Перенёс все табличные N-ричные сумматоры в однин топик...
Я тут за главного - если что шлите мыло на me собака shaos точка net
AndrejKulikov
Banned
Posts: 315
Joined: 07 Mar 2018 23:17
Location: Россия, Москва

Re: Табличный десятичный сумматор

Post by AndrejKulikov »

Lavr wrote:
AndrejKulikov wrote:В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти децитного сложения
в микросекундах (те же самые 88 микросекунд).
Много это, или мало "88 (89) микросекунд" ?
Для суперкомпьютера 88 микросекунд - это много, для процессора обычного ПК - тоже много, но достаточно для решения множества медленных
задач, а для контроллера микроволновки - это очень большая скорость, даже с избытком, а на ассемблере, Си или Java время суммирования
в программном сумматоре может оказаться меньше, чем 88 микросекунд.

Кроме этого, подобным же образом программисты могут выполнить и программные АЛУ с набором функций не предусмотренных в стандартном
наборе команд аппаратного АЛУ, которых может быть великое множество (например, только два однобайтных (восьмибитных) регистра данных
можно рассматривать, как множество бинарных (двухаргументных, двухоперандных, двухвходовых)
256-тиричных функций, которых может быть 256^(256^2)="очень много", а при восьми однобайтных регистрах, как множество октоарных
(восьмиаргументных, восьмиоперандных, восьмивходовых) 256-тиричных функций, которых может быть 256^(256^8)="ещё больше", что
значительно превышает Большие числа Дирака) и
выполнить которые все аппаратным способом невозможно, а
программным способом программисты могут сами написать нужный им набор функций программного АЛУ для решения конкретных задач,
например, разбиение битов байта по одному в восемь байтов одной функцией (одной командой) или разрядка битов одного байта через один нулями
и запись результата в два байта одной функцией (одной командой) и очень большое множество других функций (других команд) отсутствующих
в стандартном наборе команд аппаратного АЛУ.
Множество же сумматоров с разными основаниями, с различными форматами чисел и с различной разрядностью сами являются
подмножеством функций (команд) АЛУ, но очень важным и очень значимым для эвм подмножеством.
Last edited by AndrejKulikov on 12 Oct 2018 11:28, edited 7 times in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Табличный десятичный сумматор

Post by Lavr »

AndrejKulikov wrote:
Lavr wrote:
AndrejKulikov wrote:В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти децитного сложения
в микросекундах (те же самые 88 микросекунд).
Много это, или мало "88 (89) микросекунд" ?
Для суперкомпьютера 88 микросекунд - это много, для процессора обычного ПК - тоже много, но достаточно для решения множества медленных
задач, а для контроллера микроволновки - это очень большая скорость, даже с избытком, ...
Вам так трудно ответить, при какой тактовой частоте процессора результат 88 микросекунд получился на Турбо-Бейсике у Вас?
iLavr