|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Табличные N-ричные сумматоры на Бэйсике
Author |
Message |
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Более быстрая версия троичного ассиметричного табличного сумматора: Замена вычисления символа суммы на вычисление величины суммы и вынос сборки строки суммы за пределы цикла суммирования в подпрограмму вывода результата уменьшило время суммирования приблизительно со 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 07:54 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Последовательный табличный троичный симметричный сумматор устроен и работает почти также, как и последовательный табличный асимметричный сумматор, только в таблице 27 столбцов, а не 18, знак "2" означает не двойку, а не "-1", строки младшего и старшего значащих разрядов суммы другие, соответственно другие и номера троичных тринарных функций. A 210210210210210210210210210 первое суммируемое B 222111000222111000222111000 второе суммируемое C 222222222111111111000000000 перенос из предыдущего разряда ---------------------------------------------- S 021210102210102021102021210 = F3TS2201243116917 10 младший значащий разряд суммы C 202222200111011010200010000 = F3TS5927722215507 10 старший значащий разряд суммы, перенос в следующий разряд. По вышеприведённой таблице на Turbo Basic'е была написана программа последовательного суммирования двух 16-ти разрядных (16-ти тритных) чисел, скриншот которой приведён ниже: В первой строке - первое суммируемое (положительное или отрицательное) в троичном симметричном коде с заменой знака "-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
| | | | |
Диапазон сумм от 2222222222222222 3 ("2" означает "-1") = -21 523 360 10 до 1111111111111111 3 = 21 523 360 10 равен 2*21 523 360 10 + 1 = 43 046 721 10. Следует отметить, что программные сумматоры дешевле аппаратных сумматоров и могут найти применение в бюджетных моделях класса "эконом".
|
02 Oct 2018 11:07 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Табличный двоичный последовательный сумматорA 10101010 первое слагаемое B 11001100 второе слагаемое C 11110000 бит переноса из предыдущего разряда --------------- S 10010110 = F3B150 10 сумма по модулю 2 C 11101000 = F3B232 10 бит переноса в следующий разряд По вышеприведённой таблице истинности полного (трёхоперандного) двоичного одноразрядного последовательного сумматора на 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
| | | | |
Ниже приведён скриншот результата выполнения программы: В первой строке - первое слагаемое. Во второй строке - второе слагаемое. В третьей строке - сумма. В четвёртой строке - время выполнения суммирования в микросекундах. Диапазон сумм от 0 до 1111111111111111 2 = 65 535 10 равен 65 535 10 + 1 = 65 536 10. Выводы: 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 21:16, edited 2 times in total.
|
03 Oct 2018 03:46 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Ниже приведена таблица истинности четверичного полного (трёхоперандного, трёхаргументного) сумматора, который представляет из себя две тринарные четверичные функции: суммы по модулю 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
| | | | |
Результат выполнения программы приведён на скриншоте ниже: В первой строке на скриншоте - первое слагаемое. Во второй строке на скриншоте - второе слагаемое. В третьей строке на скриншоте - сумма. В четвёртой строке на скриншоте - время выполнения операции сложения в микросекундах. При 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 22:45 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Ниже приведена таблица истинности полного (тринарного, трёхоперандного, трёхаргументного) восьмиричного сумматора: 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
| | | | |
Результат выполнения программы приведён на скриншоте ниже: В первой строке на скриншоте - первое слагаемое. Во второй строке на скриншоте - второе слагаемое. В третьей строке на скриншоте - сумма. В четвёртой строке на скриншоте - время выполнения одного последовательного 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 22:37 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Ниже приведена таблица истинности десятичного полного (тринарного, трёхаргументного, трёхоперандного) сумматора: 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
| | | | |
Результат выполнения программы приведён на скриншоте ниже: В первой строке на скриншоте - первое слагаемое. Во второй строке на скриншоте - второе слагаемое. В третьей строке на скриншоте - сумма. В четвёртой строке на скриншоте - время выполнения одного последовательного 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 10 Oct 2018 23:24, edited 3 times in total.
|
09 Oct 2018 00:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22576 Location: Silicon Valley
|
Ваша задача заполнить вашими N-ричными табличными сумматорами всю первую страницу этого форума?...
|
09 Oct 2018 07:13 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
На скриншоте по факту сложение в 8-ричной системе получилось. Но, учитывая общую странность изначальных посылов, это, наверное, не так важно. Главное - арифметическая корректность одного примера, пусть он и 8-ричный вышел.
|
09 Oct 2018 13:45 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я посмотрел все 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 14:58 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Действительно 8-миричный и название файла скриншота: OctalAdder.JPG. Загрузил скриншот DecimalAdder.JPG. Спасибо за внимательность.
|
09 Oct 2018 20:08 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Из описания Turbo Basic'а: "MTIMER использует канал 2 чипа таймера 8255. Внутренняя точность MTIMER около двух микросекунд [т.е. +/- 1 микросекунда], однако точность быстро падает, если измеряемое время превышает 54 миллисекунды." Таковая частота процессора данного компьютера во время проведения опытов не изменялась. На других компьютерах с другими процессорами и с другими тактовыми частотами числа будут другими (не 88 микросекунд), но приблизительно одинаковыми. Параллельный аппаратный сумматор процессора суммирует значительно быстрее, но программный табличный сумматор значительно дешевле аппаратного и может найти применение в бюджетных моделях микроконтроллеров и компьютеров класса "эконом". В моделях с аппаратным сумматором при выходе из строя аппаратного сумматора можно переключиться на дополнительный программный табличный сумматор, что повысит надёжность всей системы.
|
09 Oct 2018 21:27 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Так какова же частота " процессора данного компьютера во время проведения опытов" ? Поскольку 88 микросекунд при неизвестной частоте процессора ни о чем не говорит. Вопрос поставлен так, поскольку для современных процессоров с частотой 1...2 ГГц время 88 микросекунд кажется весьма значительным.
_________________ iLavr
|
10 Oct 2018 06:22 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22576 Location: Silicon Valley
|
Перенёс все табличные N-ричные сумматоры в однин топик...
|
11 Oct 2018 20:43 |
|
|
AndrejKulikov
Banned
Joined: 07 Mar 2018 23:17 Posts: 315 Location: Россия, Москва
|
Для суперкомпьютера 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.
|
11 Oct 2018 22:57 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вам так трудно ответить, при какой тактовой частоте процессора результат 88 микросекунд получился на Турбо-Бейсике у Вас?
_________________ iLavr
|
12 Oct 2018 00:34 |
|
|
Who is online |
Users browsing this forum: No registered users and 92 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
|
|