Может есть хороший форум на русском?

Everything you can't fit into other forums
user123
Posts: 11
Joined: Wed Jul 13, 2022 10:51 am

Re: Может есть хороший форум на русском?

Post by user123 »

. Спасибо, изучаю.
. По FASM (1.73.30) вопрос, наверное детский: не смог создать "16 bit COFF" с главной функцией программы. Как я понял, в "COFF" нет "segment", есть "section", а ключевое слово "entry" требует записи стартового адреса в виде "segmentName:labelName". В Интернете и во встроенном руководстве (FASM.TXT, examples) не нашёл... Подскажите, может кто знает?
. Я пытаюсь придерживаться древнего способа: компилирование, связывание (линковка) из "obj" и "lib".
. Нерабочий код (entry lStart - illegal instruction):

Code: Select all

use16

format COFF

entry lStart

section "" code
  org 0

  vComHeader rb 256
lStart:
  MOV  AX, 0x4C00
  INT   0x21
а затем отображается на виртуальный LFB_BASE = 0xFE000000 , который доступен для записи в том числе и
в ring3 - пользовательском режиме (лично мне такая беспечность непонятна : нормальный пользователь при "невменяемом" экране решить проблему может только кнопкой RESET)
. В "Debian Linux 6.0.10" я настраивал пользовательскую программу на ввод-вывод в хранилище кадра (frame buffer). И рисовал без "monsters graphic server" в 16 бит цвете (R5G6B5) окна (для управления промышленной установкой достаточно), картинки, слова. Вся программа заняла где-то 200 киБ код и 2 МеБ картинки без сжатия. Даже написал прозрачность путём нахождения среднего цвета. Так что нормальный подход, а если на экране мусор - нужно останавливать все программы например по "Alt+Ctrl+Ins", вызывать "task manager" и завершать ненормальную задачу. ... Лёгкое, быстрое ПО никто не оценил - работает, да и ладно, на "QT" была б та же реакция...
. Ещё мне кажется, что видеоплаты даже вида "S3 trio" умеют аппаратно очищать память без копирования 0 в каждую ячейку, закрашивать замкнутые обрасти заданным цветом, размещать окно заданного размера по заданным координатам с изображением из другой области видеоОЗУ и тому подобное. В моём проекте всем этим занимался "CPU".
. Добавление 8 сент. 2022. Про вывод в отображаемое видеохранилище. Может быть возможно написать "task manager" в ядре с простеньким текстовым режимом на синем экране, останавливающий вывод графики (но не работу) других программ и показывающий все задачи с возможностью завершить любую (с клавиатуры). Для этого можно сменить режим экрана и адреса отображаемой видеоОЗУ для других программ станут указывать в никуда. Прерываний-исключений при рисовании другими программами быть не должно, чтобы скорость не упала, но рисование должно быть запрещено. Но вопрос: если на ША выставится адрес в никуда и данные на ШД, какое устройство скажет CPU что запись завершена?
Last edited by user123 on Thu Sep 08, 2022 9:38 am, edited 3 times in total.
Doczom
Posts: 126
Joined: Tue Nov 03, 2020 5:47 pm
Has thanked: 1 time
Been thanked: 2 times

Re: Может есть хороший форум на русском?

Post by Doczom »

Valery wrote: Sat Jul 30, 2022 11:52 am Насколько понимаю , физический адрес получается от BIOS (с некоторой настройкой)
, возможно его изменяет специализированный драйвер видео карты (таковые имеются ...)
а затем отображается на виртуальный LFB_BASE = 0xFE000000 , который доступен для записи в том числе и
в ring3 - пользовательском режиме (лично мне такая беспечность непонятна : нормальный пользователь при "невменяемом" экране решить проблему может только кнопкой RESET)
вот только этот адрес без селектора gs не доступен для пользовательских программ и любое обращение к нему без селектора приведёт к исключению, которое завершит прогу. А по поводу безопасности не думаю что это вообще есть в Колибри
Siemargl
Posts: 444
Joined: Tue Mar 08, 2016 11:00 pm

Re: Может есть хороший форум на русском?

Post by Siemargl »

Pathoswithin wrote: Wed Jul 20, 2022 3:44 pm Проще сказать, что на системном уровне память всегда выделяется страницами по 4 кб, и все ОС её так выдают. Более мелкая нарезка происходит на пользовательском уровне; а в библиотеке или в самом приложении — это уже не принципиально. Может даже лучше чтоб программист понимал, что при не правильном обращении к памяти в пределах 4 кб системной ошибки не будет.
Вообще то в ядре есть мелкоблочный аллокатор (забыл уже в каком файле), но наружу в АПИ не выведен.
Doczom
Posts: 126
Joined: Tue Nov 03, 2020 5:47 pm
Has thanked: 1 time
Been thanked: 2 times

Re: Может есть хороший форум на русском?

Post by Doczom »

этот аллокатор предназначен только для ядра и его структур, применение для программ почти невозможно, без некоторых доработок
user123
Posts: 11
Joined: Wed Jul 13, 2022 10:51 am

Re: Может есть хороший форум на русском?

Post by user123 »

Вы собираетесь разрабатывать что-то новое для 8086, 80386 real mode. 80386 protected mode .
А вас в стране наверное налажено производство аналогов этих процессоров по цене чуть большей avr для Arduino ...
. Я с ужасом думаю что случится когда мой "Penium-P54C" с "Windows 95" однажды не включится. Или высохнут конденсаторы, или p-n переход в микросборках состарится, или ещё чего. "Добра" типа "core i5,i7" на работе и у знакомых хватает, по мне только для игр пригодно. Этим системам пользователь вообще не нужен, ОС и аппаратура сами найдут чем заняться. Считаю "Pentium-pro" и последующие - ошибка, которую intel никогда не признает.
. AVR интересно, но именно "AVR processor", не контроллер, не встречал. И одного выполнителя мало. Нужен набор плат, микросборок, видеоЦАП с ОЗУ и тому подобное. Одному не справиться даже с написанием ПО.
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: Может есть хороший форум на русском?

Post by Valery »

Этим системам пользователь вообще не нужен, ОС и аппаратура сами найдут чем заняться.
По моему это проблема опреационной системы, а не "чипсета".
Я как раз пользуюсь Core-i3 прямо сейчас из GNU/Linux Debian , через пару часов (только проверю выполненные задания)
переключусь на том же компьютере в Windows XP и буде работать на секвенсоре ...
Да - память ест немеряно (600 MB GNU/Linux Debian stable, 200 MB MS Windows XP SP3), но работать можно
с моими 4 GB оперативной памяти. И я не представляю, как я бы записывал видео для конкурса
комбинируя звук профессинального диктофона и картинку Logitech Brio в реальном времени
(ибо обработка видео зарпещена) без Dell Latitude (а это Intel Core - i5)
Windows 10 (а я думаю 11 ещё хуже - без Била Гейтса компания совсем "с цепи сорвалась") конечно
совсем свихнутая OS . но если не давать её интернет от слова совсем, то можно стерпеть и её.
именно "AVR processor", не контроллер, не встречал.
А вот с этого места можно поподробнее ...
Вам не нравится, что создаются System on chip? Или у Вас в стране нельзя купить avr чип отдельно от чипсета (Arduino. например)?
Но у меня возникло подозрение, что мы по-разному понимаем слова "controller" (контроллер) и "processor" (процессор) ...

Для чего-то подобного Kolibri OS более адекватны будут чипсеты Raspberry Pi, но , что с HDMI имеют возможности Pentium 3, что чуть избылочно для Kolibri OS.
Чипсеты вроде Arduino (даже с полноценным mips32 процессором - вроде мне такой даже удалось приобрести), имеют до 1 Мб оперативной памяти и Гарвардскую архитектуру, что маловато для 250 потоков и GUI в духе Kolibri OS (нужно минимум 3 - 6 Мб, тогда можно задуматься о системе с минимальным разрешением экрана 640x480x16).
Last edited by Valery on Fri Aug 05, 2022 11:45 pm, edited 2 times in total.
User avatar
Pathoswithin
Mentor/Kernel Developer
Posts: 1298
Joined: Thu Mar 26, 2015 5:16 pm

Re: Может есть хороший форум на русском?

Post by Pathoswithin »

Это не Debian 600 MB ест, а графическая среда. У меня вот LXDE ест те же 200. По удалял все пакеты что пишут логи и система после загрузки не делает абсолютно ничего.
KPG
Posts: 46
Joined: Tue Dec 08, 2020 10:26 pm

Re: Может есть хороший форум на русском?

Post by KPG »

user123 wrote: Thu Aug 04, 2022 9:08 am . Спасибо, изучаю.
. По FASM (1.73.30
Forth (SPF4 для KolibriOS на Fasm)
Консольный тетрис в Колибри и Forth (проба Форта на Колибри)

Есть и такой топик FFire Demo Эффект огня

P.S.
Pathoswithin wrote: Fri Aug 05, 2022 6:06 pm Это не Debian 600 MB ест, а графическая среда. У меня вот LXDE ест те же 200. По удалял все пакеты что пишут логи и система после загрузки не делает абсолютно ничего.
Сам, в настоящий момент, использую Puppy Linux LiveCD в разных сборках (загружаю через Grub с внешнего USB-SSD) и думаю, что KolibriOS могла бы как то сближаться с идеей таких дисрибутивов.
Не нравится только тенденция, что софт для Linux, зачастую, собирается только для 64-х бит и может иметь какие то проблемы в рамках запуска 32-х бит после его сборки.

Из последних опробованных Puppy для Linux 64 Puppy_linux_jammypup64 (для запуска Бейсик среды MaxIDE NG с некоторым добавлением необходимых библиотек зависимости)
а, для Linux Puppy 32 в основе использую Xenial, но бывает и Tahr, хотя под тем же Bionic Pup бывает устанавливается софт из репозитория уже не доступный в этих сборках.Радует, что софт и из ScPup тоже запускается под ними. (к, примеру сборка Wine 7.4) Под Tahr pupy её штатным devx с небольшими правками процесса сборки получилось собрать в качестве пробы Wine 6.02, SeaMonkey (какой то версии) в рамках LiveCD с штатным Ram диском ~3.9Гб в системе при старте системы.
user123
Posts: 11
Joined: Wed Jul 13, 2022 10:51 am

Re: Может есть хороший форум на русском?

Post by user123 »

По моему это проблема опреационной системы, а не "чипсета".
. "Wintel" означает тесную связь: одни создают громоздкое ПО, вторые - микросборки того же уровня. И у тех и у тех сотни ошибок в изделиях. В "P55C" вроде была одна ошибка: 0xF00F... "LOCK XCHG ...". Про "Pentium-3 coppermine" ходили слухи, что редкое ПО изредка вылетало. Мне кажется главная цель "wintel" - отнюдь не качество. Из intel несколько раз уходили ведущие разработчики, недовольные внутренней политикой.
. "Pentium-2" 450 МГц на шине 100 МГц на пределе успевает сжимать на лету "704x576 MJPEG" 5 МБ/с. Причём когда сложность кадра падает и поток падает до 1 МБ/с нагрузка снижается до 33% . Что говорит о быстром выполнении матричного умножения при операциях дискретного косинус-преобразования 8x8 и квантования полученных чисел. Скорее всего узким местом становится шина до ОЗУ. При воспроизведении "DVD MPEG2" бесплатным "Media Player Classic" быстродействия не хватает, но с коммерческими проигрывателями (видимо лучше заточенными под MMX) всё нормально. "FullHD compressed by H.264" понятно недоступно (но если поставить плату расширения...).
Вам не нравится, что создаются System on chip?
. Я за научно-"techprogress". Если на одной микросборке можно разместить "CPU", "memory RAM, ROM, reprogrammableROM, videoDAC+framebuffer, audio DAC/ADC" я конечно же за. Но себе бы предпочёл "module computer" чтобы можно было подключать разные платы расширения, в том числе "ISA sound card".
. Можно купить готовую "system" на основе "Arduino/ARM/MIPS" подключить к ней клавиатуру и "display" и писать что-то хотя-бы на "assembler" забыв про обычный "PC"?
Но у меня возникло подозрение, что мы по-разному понимаем слова "controller" (контроллер) и "processor" (процессор) ...
. Контроллер не имеет средств "virtualization" памяти - программа пишется с абсолютной адресацией. Даже 8086 позволяет обращаться по относительным адресам. Может есть и "processor" с архитектурой "ARM" с защищённым режимом, я просто не знаю.
. Я против империализма. Когда создаётся стопковый совыполнитель 8087, а потом в "pentium-2" делаются попытки на лету распараллелить код. Например считаем функцию: "f() = a+0.5*v/m":

FLD [a]
FLD [@const0p5]
FMUL [v]
FDIV [m] ; код для 486 ; 386 и ниже требуют явную "WAIT",
; иначе "m" выставится на ШД в момент, когда
; "FPU" ещё не окончил умножать, а когда умножение
; будет закончено, на ШД "m" уже не будет...
FADD
; ST(0) = f()

А теперь преобразовываем каждую команду в микрокоманды, вводим преобразования СОЗУ (ST(0) -> R00 , ...), изменяем порядок микрокоманд... Не очень удачный пример, так как сама функция не параллелится. Лучше рассмотреть "f() = a*a+2*a*b+b*b":

FLD [a]
FLD [a] ; как сделать "FCOPY ST(1), ST(0)"?
FMULP
FLD [@const2] ; как загрузить непосредственный операнд?
FMUL [a]
FMUL ; хоть команд меньше ... что-то browser заглючил и хрень попёрла вместо набранного кода
FADD
FLD
FMUL
FADD

. ...Когда вводится стыковка ATA ("16 heads, 65536 cylinders, 255 sectors, summary ~130 GiB" - могу немного ошибаться), а "BIOS" при расчётах оперирует "256 heads, 1024 cylinders, 63 sectors" и виснет при подключении 40 ГиБ жёсткого диска (некоторые не виснут, но сообщают "500 MB HD found"). Однако если выставить что диска нет, загрузиться с другого, то через гавани (pots) контроллера можно спокойно работать с первым даже без поддержки "LBA" и ""DMA".
. ...Когда в "BIOS" можно запрограммировать вредоносное ПО и повесить его на "SMM ring-2".
. ...Когда выходит печка "Pentium-4", проигрывающая на равной тактовой частоте предыдущим и выигрывающая за счёт более быстрой шины и "SSE2" .
. ...Когда через день непрерывной работы в "Windows 10" отказывает часть функций "WinAPI" до перезагрузки и не ясно, то ли "CPU" выполнил недопустимую операцию, то ли ПО. С тех пор такого больше не повторилось, но ...
Last edited by user123 on Wed Sep 07, 2022 7:29 am, edited 17 times in total.
user123
Posts: 11
Joined: Wed Jul 13, 2022 10:51 am

Re: Может есть хороший форум на русском?

Post by user123 »

. "DOS EXE" заготовка, код рабочий:

Code: Select all

.8086

gData group _sDataInit, _sDataNoInit ; область данных - объединение из
                                     ; 2 бутафорских областей

_sCode segment para public ; настоящая область
  assume CS:_sCode
fMain:
  PUSH DS
  MOV  AX, gData ; вот с этим вопрос: областной адрес-то до загрузки
                 ; неизвестен, что в "AX"-то писать при компиляции...

  ; В файле "COFF OBJ" пишется "MOV  AX, 0", в файле "DOS EXE" - "MOV  AX, 2",
  ; после загрузки в ОЗУ - новое значение.

  MOV  DS, AX
  assume DS:gData
  POP  AX
  MOV  [vPspSegmAddr], AX ; здесь сборщик догадывается, что адрес нужно
                          ; посчитать относительно объединения "gData"

  MOV  AH, 009h
  MOV  DX, offset gData:vMess ; а вот оператор "offset" без переопределения
                              ; всегда возвращает адрес относительно начала
                              ; той бутафорской области, где
                              ; переменная определена
  INT  021h

  ; Переменной "vMess" хоть "offset vMess", хоть как выше - всё равно 0 , а вот
  ; "vPspSegmAddr" - нет. Поэтому лучше всегда указывать подробности.

  MOV  AX, 04C00h
  INT  021h
ends

_sDataInit segment para public ; бутафорская область
  vMess db "Hello, world!$"
ends

_sDataNoInit segment word public ; бутафорская область
  vPspSegmAddr dw ?
ends

_sStack segment para public stack ; настоящая область
  ; Если не объявить эту область, связыватель выдаст
  ; справедливое предупреждение.

  db 8192 dup (?)
ends

end fMain
. Скомпилированный файл:

Code: Select all


                    Файл на накопителе

    Все числа в 16-ричном виде.
    Адрес 0 - заголовок "DOS EXE":

----------------
 Адр.   Содерж.
----------------
 0000   4D5A
 0002   2E00
 0004   0200
 0006   0100
 0008   2000
 000A   0102
 000C   FFFF
 ...
 01FC   0000
 01FE   0000
----------------

    Адрес 200 - код:

------------------------------------------------------------------------------
 Адр.   Содерж.
------------------------------------------------------------------------------
 0200   1E       PUSH DS
 0201   B80200   MOV  AX, 0002 ; областой адрес-то бутафорский... очевидно
                               ; загрузчик правит код в загруженной из
                               ; файла ОЗУ
 0204   8ED8     MOV  DS, AX
 0206   58       POP  AX
 0207   A30E00   MOV  [000E], AX
 020A   B409     MOV  AH, 09
 020C   BA0000   MOV  DX, 0000
 020F   CD21     INT  21
 0211   B8004C   MOV  AX, 4C00
 0214   CD21     INT  21
 0216   0000     ; нули для выравнивания данных на 16 Б
 0218   0000
 ...
------------------------------------------------------------------------------

    В файле выравнивание можно было и не делать, но тогда в нём пришлость бы
искать области и загружать каждую по выровненному адресу. А так можно загрузить
как непрерывные данные с адреса 200 (десятич. 512) .
    Адрес 220 - данные:

--------------------
 Адр.   Содерж.
--------------------
 0220   4865     He
 0222   6C6C     ll
 0224   6F2C     o,
 0226   2077      w
 0228   6F72     or
 022A   6C64     ld
 022C   2124     !$
--------------------

    Конец файла, размер: 22E (все числа в 16-ричном виде, десят.: 558) Б из
которых 200 (по десят. 512) Б - заголовок.


                    Загруженный в ОЗУ файл

    Все числа в 16-ричном виде.
    Начальное содержимое СОЗУ:

CS=1560   IP=0000
DS=1550
SS=1563   SP=2000

    Начальное содержимое ОЗУ в области "CS":
------------------------------------------------------------------------------
 Адр.   Содерж.
------------------------------------------------------------------------------
 0000   1E       PUSH DS
 0001   B86215   MOV  AX, 1562 ; областной адрес поправлен загрузчиком
 0004   8ED8     MOV  DS, AX
 0006   58       POP  AX
 0007   A30E00   MOV  [000E], AX
 000A   B409     MOV  AH, 09
 000C   BA0000   MOV  DX, 0000
 000F   CD21     INT  21
 0011   B8004C   MOV  AX, 4C00
 0014   CD21     INT  21
 0016   0000     ; выравнивающие нули, если сюда по ошибке попадёт управление,
 0018   0000     ; то выполнитель исполнит "ADD [BX+SI], AL"
 ...
 0020   4865     He ; переменная vMess
 0022   6C6C     ll
 0024   6F2C     o,
 0026   2077      w
 0028   6F72     or
 002A   6C64     ld
 002C   2124     !$
 002E   XXXX     ; место под неинициализированную переменную "vPspSegmAddr"

 0030   XXXX     ; неинициализированная область стопки
 0032   XXXX
 ...
 202E   XXXX
------------------------------------------------------------------------------
user123
Posts: 11
Joined: Wed Jul 13, 2022 10:51 am

Re: Может есть хороший форум на русском?

Post by user123 »

. Создал первое "Windows 32" приложение с главной функцией на "assembler" , до этого писал на нём только второстепенные 32 б функции, вызываемые из С. Оказывается помимо "stack" есть ещё" heap" минимум 65 киБ каждый. Если не указывать явно или запросить 32 киБ - связыватель создаёт обычные 1 МеБ под "stack" и "heap". Куча вероятно для динамически создаваемых переменных. Пока не знаю, можно ли от неё отказаться.
. По мне на сборщике писать утомительно. А под "Си" нет компилятора, предоставляющего полную свободу действий. Из всех "С" мне больше понравился "GCC", который выдаёт предупреждения на неиспользуемые местные переменные не только в стопке, но и в области данных, предупреждения на затенение местных переменных, двойное объявление заголовков функций и так далее. Но вот данных вида "char" у "CPU" не бывает и "asm" вставки слишком заумные...

Code: Select all

static unsigned int vA;
unsigned int vB;

unsigned int _fMain_factorial(unsigned int v_value)
{
  if(v_value > 1)
  {
    return v_value*_fMain_factorial(v_value-1);
  }
  return 1;
}
Warning: "vA" is unused variable.
. "vB" - общая переменная в области данных, которая может быть использована в других файлах.
. Помечтаю немного:

Code: Select all

public unsigned byte vAlingm;
unsigned int vA;
public unsigned int vB;

public unsigned int _fMain_factorial(unsigned int v_value)
{
 ...
Warning: "vA" first misallingment.
Warning: "vA" is unused wariable.

. Написал проверку скорости чтения-записи в тайник и ОЗУ. Код:
...
CLD
...
REP
LODSD ; EAX = DS:[ESI] , ESI += 4 , ECX--
...
CLD
...
REP
STOSD ; ES:[EDI] = EAX , EDI += 4 , ECX--
...
. На "Pentium-3 Katmai 500 MHz" получились следующие скорости:

Code: Select all

Block            Read speed,     Write speed
size, kiB         kiB/s           kiB/s
4                 540000          2100000
8                 520000          2200000
16                550000          2300000
32                540000          450000
...
512               510000           440000
1024             290000            190000
. Если заменить код чтения на:
@@Loop:
MOV EAX, [ESI]
MOV EBX, [ESI+4]
ADD ESI, 8
SUB ECX, 2
JNZ @@Loop
То скорость поднимается до 1200000 киБ/с на 4 , 8 , 16 кБ участках.
. Доделал. Результаты (block size, read/write, MB/s):
Pentium-P54CS: "66x2=133" MHz, L1: 8+8 kiB on 430VX: L2: 256 kiB, EDO RAM 16 MeB, Windows 95 OSR2.5 .
4 kiB: 510/89
8 kiB: 454/88
16 kiB: 171/87
32 kiB: 171/86
64 kiB: 171/86
128 kiB: 171/85
256 kiB: 157/85
512 kiB: 98/85
1 MeB: 97/85
Какого-то чёрта не работает обратная запись, даже некоторые 486 её поддерживали. Поди ещё штырь микросборки "WB/WT#" в +3,3 В , но проверять нужно.

Pentium-3 Katmai: "100x5=500" MHz, L1: 16+16 kiB, L2: 512 kiB on 440BX: SDRAM 128 MeB, Windows 95 OSR2.5 .
4 kiB: 1551/1551
8 kiB: 1551/1551
16 kiB: 1505/1551
32 kiB: 906/409
64 kiB: 912/409
128 kiB: 914/411
256 kiB: 907/409
512 kiB: 483/286
1 MeB: 386/202
Ясно, что это изделие будет быстрее. И дело возможно не в ядре-686.
. Задание на выходные: загрузить "DOS" без "HIMEM.SYS", подготовить таблицу описателей, перейти в "protect mode" через "BIOS 0x15 (AH=0x89)". Запретить прерывания (кроме "hardware IRQ0" также известное как "software IRQ8" , для него написать обработчик) и проверить скорость ОЗУ, рез-т вывести на экран. Задание более высокого уровня: подготовить таблицу страниц, разрешить страничное преобразование, указать атрибуты "тайник разрешён (PCD=0)" и "сквозная запись запрещена (PWT=0)". Проверить результаты - здесь и выяснится, причём "Windows-95" или нет. Запрет других прерываний заключится в пустом обработчике. Задание самое сложное: не обращать внимание на высказывания "копошится дурачок в старом хламе, у меня уже 8 ядерный i7, да ладно, пошутил я, умный ты, слышь, купи у меня 486 системный блок, недорого, всего за 20.000 руб, это гораздо дешевле рыночной цены такого раритета, ты его потом за 50 тыс. продашь", просто держаться от крутых подальше.
.
. Добавление 15 сент. 20222.
. Завершено на 25% . Область кода, данных "DS", "ES" признана со всеми правами, видеоОЗУ управляется. Не признаётся "SS" - при попытке "PUSH/POP" вылетает с нарушением "General Protect Fault". Пока разбираюсь, стопковой области указал "растёт к младшим адресам".
. По "a*a+2*a*b+b*b" (см. выше). Если у кого появились мысли "идиотом быть, чтобы считать в лоб, иди алгебру за 6 класс учи" то мне с такими не по пути. Так как речь шла о распараллеливании вычислений. Да пример опять не очень удачный, лучше взять перемножение матриц "2x2", но мысль, которую я озвучил несколько глубже.
.
. * * *
. По ссылке http://sannata.org/konkurs/2015/kt1511.shtml можно сравнить производительность "Pentium" и "Pentium-Pro/2" и задуматься, для чего нужно переименование СОЗУ, внеочередное исполнение микроопераций и чего стоят высказывания "принципиально новая "structure" "пайплэйна" (конвейера) обеспечивает вдвое большую производительность "Pro" на одной тактовой частоте в 32-разрядных приложениях". Здесь можно аккуратно добавить "в приложениях вида "Microsoft Exel" ".
. "Pentium" был неплох по сравнению с "PowerPC-601". В -мэнуэле- руководстве к "PowerPC" написано, что дробночисленный узел имеет 64 б СОЗУ, а пенёк: 80 б. Поэтому последний должен уметь на лету преобразовывать загружаемые 32 , 64 б числа в 80 б и обратно, а так же производить вычисления с большей точностью. Отсюда больше транзисторов. В руководстве к "Pentium" написано, что в управляющем СОЗУ есть битовое поле "точность", однако снижение её не влияет на скорость выполнения. В ранних неконвейерных "FPU", снижение точности увеличивало скорость.
. И ещё в "x86 protect mode" описатель "TSS" содержит странное на мой взгляд поле "указатель на битовую карту ввода-вывода 8 киБ". Интересно, в микросборке приготовлена цепь сравнивателей (компараторов), выдающая прерывание (интеррапт) при попытке работать с запретной гаванью (портом)? Очень может быть, что установлено 32.768 (точкой разделяю цифры в числе, запятой - целую и дробную часть) сравнивателей, анализирующие адрес гавани за 2 такта. Или установлено 8.192 сравнивателя, определяющие попадают ли старшие биты в запретную область и, если попадают, на второй такт определяется попадают ли младшие 3 .
. 8 кБ тайника обходится примерно в 500 тыс. транзисторов. Можно зайти и с другой стороны. Не делать хранилище 8 кБ и сравниватели как написано выше. А при каждом запросе на ввод-вывод считывать соответствующий байт карты из ОЗУ, выделять в нём соответствующий бит и сравнивать бит с нолём.
. Впрочем, повторю ещё раз: "Pentium P54C/P55C" был очень неплох. Я бы купил ядро P55C в "cartridge slot 1" по современной технологии на частоте "133x6 = 800" МГц с тайником У2 1024 кБ на 400 МГц за цену "core i5". А там, глядишь и 2-4 ядра сделают, "DDR"-шину и новый набор микросборок на основе "440BX".
.
. Впрочем, начинаю склоняться к мнению, что писать проекты лучше в одиночестве. Можно было бы выложить сюда коды моих программ на "Си", "Сборщике"... (на всякий случай чтобы не сочли блаблаболом приложу программку для "Windows 95" на Си-Сборщике но без исходных кодов и в двумерном варианте, с матрицами "2x2"; трёхмерный вариант с проволочными моделями, без закраски и отсечения заслонённых треугольников не очень хорош) да такое чувство, что снова в очередной раз скатываюсь в дно. Если кто-то считает, что я не совсем дурачок, просьба написать что-то здесь.
Attachments
GravityUser.rar
(24.36 KiB) Downloaded 2 times
CpuCompare3.PNG
CpuCompare3.PNG (395.85 KiB) Viewed 503 times
CpuCompare2.PNG
CpuCompare2.PNG (152.46 KiB) Viewed 508 times
CpuCompare.PNG
CpuCompare.PNG (151.92 KiB) Viewed 508 times
Post Reply

Who is online

Users browsing this forum: Semrush [Bot] and 1 guest