nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 12 Dec 2018 09:05



Reply to topic  [ 33 posts ]  Go to page Previous  1, 2, 3  Next
Табличные N-ричные сумматоры на Бэйсике 
Author Message
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Более быстрая версия троичного ассиметричного табличного сумматора:
Attachment:
TernaryAdder16-tritUnsigned2.JPG
TernaryAdder16-tritUnsigned2.JPG [ 18.91 KiB | Viewed 1062 times ]

Замена вычисления символа суммы на вычисление величины суммы и вынос сборки строки суммы за пределы цикла суммирования в подпрограмму вывода результата уменьшило время суммирования приблизительно со 104-х до 89-ти микросекунд, т.е. приблизительно на 15-ть микросекунд (на 15,6%).
Code:
'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



01 Oct 2018 08:54
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Последовательный табличный троичный симметричный сумматор устроен и работает почти также, как и последовательный табличный асимметричный сумматор, только в таблице 27 столбцов, а не 18, знак "2" означает не двойку, а не "-1", строки младшего и старшего значащих разрядов суммы другие, соответственно другие и номера троичных тринарных функций.
A 210210210210210210210210210 первое суммируемое
B 222111000222111000222111000 второе суммируемое
C 222222222111111111000000000 перенос из предыдущего разряда
----------------------------------------------
S 021210102210102021102021210 = F3TS220124311691710 младший значащий разряд суммы
C 202222200111011010200010000 = F3TS592772221550710 старший значащий разряд суммы, перенос в следующий разряд.
По вышеприведённой таблице на Turbo Basic'е была написана программа последовательного суммирования двух 16-ти разрядных (16-ти тритных) чисел, скриншот которой приведён ниже:
Attachment:
TernarySymmetricAdder.JPG
TernarySymmetricAdder.JPG [ 18.01 KiB | Viewed 1082 times ]

В первой строке - первое суммируемое (положительное или отрицательное) в троичном симметричном коде с заменой знака "-1" на знак "2".
Во второй строке - второе суммируемое (положительное или отрицательное) в троичном симметричном коде с заменой знака "-1" на знак "2".
В третьей строке - сумма (положительная или отрицательная) в троичном симметричном коде с заменой знака "-1" на знак "2".
В четвёртой строке - время выполнения суммирования в микросекундах (почти такое же, как и в ассиметричном табличном троичном сумматоре).
Code:
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.
Следует отметить, что программные сумматоры дешевле аппаратных сумматоров и могут найти применение в бюджетных моделях класса "эконом".


02 Oct 2018 12:07
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Табличный двоичный последовательный сумматор
A 10101010 первое слагаемое
B 11001100 второе слагаемое
C 11110000 бит переноса из предыдущего разряда
---------------
S 10010110 = F3B15010 сумма по модулю 2
C 11101000 = F3B23210 бит переноса в следующий разряд
По вышеприведённой таблице истинности полного (трёхоперандного) двоичного одноразрядного последовательного сумматора на Turbo Basic'е была написана программа последовательного сложения двух положительных 16-ти разрядных (16-ти битных) двоичных чисел без знака.
Code:
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

Ниже приведён скриншот результата выполнения программы:
Attachment:
BinaryAdder.JPG
BinaryAdder.JPG [ 18.55 KiB | Viewed 1052 times ]

В первой строке - первое слагаемое.
Во второй строке - второе слагаемое.
В третьей строке - сумма.
В четвёртой строке - время выполнения суммирования в микросекундах.
Диапазон сумм от 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 порядка) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.


Last edited by AndrejKulikov on 05 Oct 2018 22:16, edited 2 times in total.



03 Oct 2018 04:46
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Ниже приведена таблица истинности четверичного полного (трёхоперандного, трёхаргументного) сумматора, который представляет из себя две тринарные четверичные функции: суммы по модулю 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:
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

Результат выполнения программы приведён на скриншоте ниже:
Attachment:
QuadroAdder.JPG
QuadroAdder.JPG [ 18.04 KiB | Viewed 1036 times ]

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

При 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 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.


05 Oct 2018 23:45
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Ниже приведена таблица истинности полного (тринарного, трёхоперандного,
трёхаргументного) восьмиричного сумматора:
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:
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

Результат выполнения программы приведён на скриншоте ниже:
Attachment:
OctalAdder.JPG
OctalAdder.JPG [ 18.69 KiB | Viewed 1018 times ]

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

Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины основания системы счисления и количества переносов при суммировании.
3. Приблизительно при одном и том же времени суммирования диапазон сумм (мощность множества сумм) последовательного табличного восьмиричного 16-ти октитного сумматора в 8^16/2^16 = 4^16 = 4 294 967 296 раз (почти на 9,5 порядков) больше (мощнее) диапазона сумм (мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на восьмиричную систему счисления может существенно (почти на 9,5 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел даже на существующих двоичных контроллерах и двоичных компьютерах.


07 Oct 2018 23:37
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Ниже приведена таблица истинности десятичного полного (тринарного, трёхаргументного, трёхоперандного) сумматора:

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:
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

Результат выполнения программы приведён на скриншоте ниже:
Attachment:
DecimalAdder.JPG
DecimalAdder.JPG [ 19.21 KiB | Viewed 1025 times ]

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

Выводы:
1. При последовательном суммировании на табличных 16-ти разрядных сумматорах расход памяти на одно число
приблизительно в 16-ть раз больше, поэтому этот способ пригоден только для ограниченного круга вычислительных
задач с малым (приблизительно в 16-ть раз меньшим) количеством чисел.
2. При последовательном суммировании на табличных сумматорах время суммирования почти не зависит от величины
основания системы счисления и количества переносов при суммировании
.
3. Приблизительно при одном и том же времени суммирования (те же самые 88 микросекунд) диапазон сумм (мощность множества сумм)
последовательного табличного десятичного 16-ти децитного сумматора
в 10^16/2^16 = 5^16 = 152 587 890 625 раз (более чем на 11 порядков) больше (мощнее) диапазона сумм
(мощности множества сумм) последовательного табличного двоичного 16-ти битного сумматора.
4. При сумматорах с последовательным сложением переход на десятичную систему счисления может существенно
(более чем на 11 порядков) уменьшить время решения некоторых вычислительных задач с малым количеством чисел
даже на существующих двоичных контроллерах и двоичных компьютерах.


Last edited by AndrejKulikov on 11 Oct 2018 00:24, edited 3 times in total.



09 Oct 2018 01:42
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17209
Location: Colorado
Reply with quote
Ваша задача заполнить вашими N-ричными табличными сумматорами всю первую страницу этого форума?...

_________________
:eugeek: https://twitter.com/Shaos1973


09 Oct 2018 08:13
Profile WWW
Doomed

Joined: 25 Aug 2009 08:02
Posts: 362
Location: Москва
Reply with quote
На скриншоте по факту сложение в 8-ричной системе получилось. Но, учитывая общую странность изначальных посылов, это, наверное, не так важно. Главное - арифметическая корректность одного примера, пусть он и 8-ричный вышел.


09 Oct 2018 14:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
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)
и т.д.

_________________
iLavr


09 Oct 2018 15:58
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Mixa64 wrote:
На скриншоте по факту сложение в 8-ричной системе получилось. Но, учитывая общую странность изначальных посылов, это, наверное, не так важно. Главное - арифметическая корректность одного примера, пусть он и 8-ричный вышел.

Действительно 8-миричный и название файла скриншота: OctalAdder.JPG. Загрузил скриншот DecimalAdder.JPG. Спасибо за внимательность.


09 Oct 2018 21:08
Profile
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
Lavr wrote:
Я посмотрел все 3 поста про "Табличный N-ичный сумматор": в 2-х постах "88 микросекунд",
а в одном - "89 микросекунд". Но я нигде не увидел хотя бы тактовую частоту процессора
на котором проводились вычисления. Много это, или мало "88 (89) микросекунд" ?

Из описания Turbo Basic'а:
"MTIMER использует канал 2 чипа таймера 8255.
Внутренняя точность MTIMER около двух микросекунд [т.е. +/- 1 микросекунда], однако точность
быстро падает, если измеряемое время превышает 54 миллисекунды."

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

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

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


09 Oct 2018 22:27
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
AndrejKulikov wrote:
Lavr wrote:
Я посмотрел все 3 поста про "Табличный N-ичный сумматор": в 2-х постах "88 микросекунд",
а в одном - "89 микросекунд". Но я нигде не увидел хотя бы тактовую частоту процессора
на котором проводились вычисления. Много это, или мало "88 (89) микросекунд" ?
Таковая частота процессора данного компьютера во время проведения опытов не изменялась.
На других компьютерах с другими процессорами и с другими тактовыми частотами числа будут
другими (не 88 микросекунд), но приблизительно одинаковыми.

Так какова же частота "процессора данного компьютера во время проведения опытов" ?
Поскольку 88 микросекунд при неизвестной частоте процессора ни о чем не говорит.

Вопрос поставлен так, поскольку для современных процессоров с частотой 1...2 ГГц время
88 микросекунд кажется весьма значительным.

_________________
iLavr


10 Oct 2018 07:22
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17209
Location: Colorado
Reply with quote
Перенёс все табличные N-ричные сумматоры в однин топик...

_________________
:eugeek: https://twitter.com/Shaos1973


11 Oct 2018 21:43
Profile WWW
Maniac

Joined: 08 Mar 2018 00:17
Posts: 276
Location: Россия, Москва
Reply with quote
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 12:28, edited 7 times in total.



11 Oct 2018 23:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
AndrejKulikov wrote:
Lavr wrote:
AndrejKulikov wrote:
В четвёртой строке на скриншоте - время выполнения одного последовательного 16-ти децитного сложения
в микросекундах (те же самые 88 микросекунд).

Много это, или мало "88 (89) микросекунд" ?

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

Вам так трудно ответить, при какой тактовой частоте процессора результат 88 микросекунд получился на Турбо-Бейсике у Вас?

_________________
iLavr


12 Oct 2018 01:34
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 33 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 11 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.