Площадка рядом с башней. Бак № 1 • Психология и соционика

Площадка рядом с башней. Бак № 1

Re: Площадка рядом с башней. Бак № 1

Сообщение Fouras » Сб окт 20, 2018 7:32 pm

Если я неправ, любой может это понять, поскольку ни одной буквы возражений не пропало.
Аватара пользователя
Fouras
Бывалый
Бывалый
 
Сообщения: 3658
Зарегистрирован: Пн июн 12, 2017 1:23 am
Медали: 10
Пол: Мужской

Re: БК-0010 старца

Сообщение sng » Сб окт 20, 2018 7:45 pm

Старец, ты просто тупо передергиваешь и не краснеешь. Почему ты оставляешь эту дрянь тут, а ответ на нее -- сливаешь в бак?
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: БК-0010 старца

Сообщение northanger » Сб окт 20, 2018 8:07 pm

sng писал(а):Старец, ты просто тупо передергиваешь и не краснеешь.


Мне кажется, желание передёрнуть способно вогнать в краску только неопытных подростков.
Аватара пользователя
northanger
Dark side
Dark side
 
Сообщения: 4081
Зарегистрирован: Пт июл 20, 2018 8:27 pm

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Сб окт 20, 2018 8:14 pm

Ошибочно.
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение northanger » Сб окт 20, 2018 8:16 pm

sng писал(а):Ошибочно.


Пора взрослеть. Да и работа над чувством юмора не будет лишней.
Аватара пользователя
northanger
Dark side
Dark side
 
Сообщения: 4081
Зарегистрирован: Пт июл 20, 2018 8:27 pm

Re: БК-0010 старца

Сообщение TailWind » Вт окт 23, 2018 12:42 am

sng писал(а):Старец, что Вы, черт побери, несете?
Какая такая зараза? Какие форумы? Я занимался программированием, потому что хотел понять, что такое компьютер, настолько фундаментально, насколько мог. Меня интересовала цифровая электроника, архитектура процессоров и ядер операционных систем

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

Цифровая логика - в ней нет ничего сложного. Берёшь какой нибудь учебник. Там всё очень просто. D триггеры, элементы ИЛИ-НЕ, И-НЕ итд
Посложнее карты Карно. Но это уже не интересно потому что всё делает за тебя синтезатор
Ты просто пишешь схему на языке типа verilog
Делаешь тестовое окружение, модели всех компонентов материнской платы. Запускаешь какой нибудь ncsim
Проверяешь временные диаграммы
Потому запускаешь синтезатор и бам netlist готов
Потом опять запускаешь модель, где уже язык высокого уровня заменён на логические элементы из библиотеки фабрики
И проверяешь что нет нарушений времянки (td th, время до клока, время удержания после клока)
Всё это прописывается в модели

В Москве есть несколько НИИ которые делают процессоры
Устройся туда работать на пару лет
И всё поймёшь

Правда потом придёт скука

Без обид, программисты плохо понимают как работает процессор :)
Аватара пользователя
TailWind
Старожил
Старожил
 
Сообщения: 5329
Зарегистрирован: Ср апр 15, 2015 1:36 am
Медали: 5
Пол: Мужской

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:15 am

Tailwind

Ну, я говорил Старцу о том, что меня это интересовало в программировании (и теоретически я эти вещи уже изучал, а практически -- программировал ОС), а не написание отдельных программ как таковое или работа программистом. :)

А что до архитектуры процессора, я привык мыслить о ней на 3х основных уровнях:

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

- микроархитектура -- тут собственно появляется процессор как целое, это связанные шинами блоки, вызывающие, декодирующие и выполняющие машинные команды, и хранящие промежуточные результаты и некоторые специфические значения (начну с регистров, хотя разумнее в каком-то смысле -- с выборки) --
регистры (счетчик машинных команд, состояние машины, какие-то соединенные с памятью регистры для копирования данных и передачи их адреса, наконец, невидимый на верхних уровнях регистры (регистры), где хранится сама вызванная команда),
микропрограмма (в случае CISC, в том числе x86) -- для трансляции приходящих машинных команд в череду маленьких, выполняемых прямо логическими схемами как набор цифровых сигналов,
блок выборки команд (в крайней случае -- тот один регистр),
АЛУ для выполнения большинства команд,
соединительные шины,
дополнительные узлы для повышения производительности системы.

- уровень ISA -- машинный язык и еще более абстрактная архитектура ЦП, как ее видит системный программист, пишущий для голого железа (в том числе ОС).
Эти команды для предыдущего уровня являются интерфейсом, как системный вызов read() -- интерфейсом UNIX для прикладной программы на асме, С или любом языке, где можно совершать системные вызовы, если мы говорим про CISC -- а в RISC именно они и будут выполнены аппаратурой, и с языковой точки зрения этот уровень совпадает с предыдущим (но физически его конечно можно выделить).
Вот именно этот вот уровень я изучал основательно для x86 -- точней, на том уровне, что необходим для программирования ядра (например, команды MMX, SSEx и VT-x, появившиеся и развивавшиеся на протяжении последних лет 25, я проигнорировал).
В общем случае это организация памяти машины (режимы адресации в системе команд и структурные единицы, реализующие адресацию, возможно, виртуальная память -- если ЦП подразумевает запуск сложной защищенной ОС вроде UNIX или Windows NT), организация ввода-вывода (обычно в виде пространства портов или отображенного на память или все вместе), доступные регистры, система команд и дополнительные параметры, вроде режима работы (технически записанные в тех же системных регистрах).
В случае x86-32 -- достаточно интересная система виртуальной памяти, слизанная с системы MULTICS (правда ни одна ОС не использует предоставляемую ей возможность сегментации, а не просто страничной организации, при том, что именно сегментация является обязательной в архитектуре -- т.е. в большинстве реализаций отсутствие сегментов просто имитируется программно).
А логический адрес тут формируется как a + b + c*d, где a -- константа в команде, b -- один из регистров или число, c -- 1/2/4 (размер элемента), а d -- другой регистр.
Вот этот уровень я изучал по мануалу 80386. Для меня он был интерфейсом.
Хотя можно и творить его непосредственно, создавая систему машинных команд -- таким я пока не занимался.
Микроархитектурой не занимался вообще, просто изучал теоретически. Цифровым уровнем -- немного, в основном симуляторы или макетная плата (самые простые комбинационные схемы).
Последний раз редактировалось sng Вт окт 23, 2018 1:30 am, всего редактировалось 1 раз.
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение TailWind » Вт окт 23, 2018 1:29 am

sng писал(а):- цифровая электроника -- это комбинаторные цифровые схемы и схемы памяти, построенные на вентилях, реализующих функции булевой логики. Тут я только на макетной плате развлекался, в симуляторах, на бумаге и в голове. Есть желание построить когда-то законченный цифровой процессор из микросхем серий 4000 и 7400 или подобных на макетной плате, придумав для него примитивную систему команд, но это только в свободное время, если оно будет.

Нет
Это конечно не возможно
Нужно взять FPGA (ПЛИС) и на её основе можно сделать простой микроконтроллер


sng писал(а):- микроархитектура -- тут собственно появляется процессор как целое, это связанные шинами блоки, вызывающие, декодирующие и выполняющие машинные команды, и хранящие промежуточные результаты и некоторые специфические значения (начну с регистров, хотя разумнее в каком-то смысле -- с выборки) --

Нет, всё не так
Регистры управления периферийными устройствами загружаются за 1 такт
Команды процессора исполняются за несколько тактов. Это называется конвеер
Чем сложнее команда, тем больше тактов она выполняется
Это зависит от быстродействия библиотечных логических элементов
Банальные И, ИЛИ выполняются за 1 такт
Сумма выполняется за несколько тактов
Сложные штуки типа квадратного корня требуют несколько тактов
FPU (floating point uint) что в C называют типом double выполняется ещё дольше

Дальше есть южный мост, который инженеры называют системным контроллером
Который осуществляет преобразование интерфейса процессора с интерфейсами PCI, USB, RS-232, помятью SRAM, DDR, Flash итд
Там почти нет задержек
Почти всё осуществляется по стандартам протокола передачи данного интерфейса

То есть банальных 7400 тебе тут не хватит никак :)
Последний раз редактировалось TailWind Вт окт 23, 2018 1:36 am, всего редактировалось 1 раз.
Аватара пользователя
TailWind
Старожил
Старожил
 
Сообщения: 5329
Зарегистрирован: Ср апр 15, 2015 1:36 am
Медали: 5
Пол: Мужской

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:35 am

Я там ранее ошибочно написал, что в x86 отдельного регистра-указателя команд нет, забыл. Конечно, там есть отдельный регистр для этого -- %eip (как часть большей системы адресации %cs:%eip). По-моему он будет хранить смещение в рамках сегмента -- которое аналогично (если бы это был адрес данного) было бы высчитано по формуле выше и положено в какой-то иной регистр. Хотя в принципе можно было обойтись и без него как отдельного, конечно.
А база, от которой будет браться смещение, задается в таблице дескрипторов, индекс которой лежит в сегментном регистре (%cs в примере выше).
Далее полученный от прибавления базы и смещения адрес -- линейный адрес -- может быть готовым физическим адресом (если трансляция на страницы отключена) или дополнительно транслироваться по таблице страниц в физический.
Обычно, собственно, именно сегментации как бы и нет -- база сегментов установлена в 0, а лимит -- в максимум (4Gb или 4Gb - 1), хотя ЦП об этом даже не догадывается, а вот страничная адресация включена и ей осознаваемо оперирует ядро ОС.
Вот примерно такая адресация памяти в связке x86-современная ОС без сегментации, если не брать PAE, хотя это уже отдельная тема, в общем-то. :)
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:38 am

Ой.
При чем тут что нужно взять, а что не нужно, Тэйл. :)
Я говорю о том, как в общем случае вижу процессор.

И теоретически я вполне могу построить АЛУ из сумматора, нескольких логических расчетчиков и декодера -- а их каждый на соответствующих чипах (если нет отдельных). Система команд будет примитивная, но это возможно.
Да и весь процессор.

Без ОЗУ он обойдется. А данные в регистры будут задаваться переключением перемычек.
Господи, такое нужно на лабах в универе давать. :)
Последний раз редактировалось sng Вт окт 23, 2018 1:39 am, всего редактировалось 1 раз.
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение TailWind » Вт окт 23, 2018 1:39 am

Я бы не назвал это ху... фигату современной адресацией :)

Это всё пляски с бубном вокруг 16 бит, .. потом 32-бит, потом 64-бит
Аватара пользователя
TailWind
Старожил
Старожил
 
Сообщения: 5329
Зарегистрирован: Ср апр 15, 2015 1:36 am
Медали: 5
Пол: Мужской

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:40 am

Вообще, лишний раз убеждаюсь в Вашей ЧЛ как доминирующей над БЛ, и вообще над всеми остальными функциями, возможно, вместе взятыми. :)
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:42 am

То, КАК реализована адресация в x86, даже на уровне машинного языка -- запредельно уродливо, согласен (чего стоит формат индексного дескриптора).
А вот сама мысль -- очень толковая, правда она не Intel принадлежит.
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:45 am

Насчет без ОЗУ -- я исправляюсь, подавать команды извне компьютера на ходу, это извращение -- хотя тоже вполне возможно.
Отдельная память, где они будут хранится (ряд регистров с декодером для выбора нужного регистра, и в эти регистры записана программа), желательна. На перемычках будут задаваться только входные данные.
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Re: Площадка рядом с башней. Бак № 1

Сообщение sng » Вт окт 23, 2018 1:55 am

А что до конвейера -- это теоретически не необходимая сущность.
Собственно, голая микроархитектура, состоящая из:

- регистры -- счетчик команд (ОТ) R1, адрес данных (ОТ) R2, код команды (В) R3, данные (ОТ/В) R4, регистры промежуточных значений (НЕТ связи с памятью) R5...Rn, возможно, адрес вершины стека (ОТ) Rn+1, состояние машины (НЕТ связи с памятью) Rn+2, возможно, отдельный регистр для хранения текущей микрокоманды Rm

- АЛУ

- соединительная шина

- (если CISC) микрокод, куда прошиты микрокоманды, последовательности которых интерпретируют команду (очередную выбранную из памяти), хранящуюся в R3

- блок интерпретатора, который задает правило замены верхней команды на череду нижних. В случае Таненбаума, например, каждая микрокоманда хранит адрес следующей микрокоманды, и обычно он и выбирается, но в случае ветвлений идет учет результата операции АЛУ, зависимо от которого на аппаратном уровне происходит выбор одной из двух таких микрокоманд (чей адрес в ПЗУ отличается одним верхним битом). Команды непосредственно хранят адреса следующих в себе, так как иначе было бы слишком много команд перехода, так как даже если в случае одной верхней команды череда интерпретирующих ее идет подряд, для других это может быть уже не так. Этот блок соединен с регистром R3 (хранящий высокоуровневую машинную команду), выходом АЛУ и полем СЛЕД предыдущей микрокоманды из Rm как входами и декодером ПЗУ микрокоманд как выходом

целиком и полностью возможна.

Формат микрокоманды пусть выглядит так (я пишу максимально общо, обычно адресация двухадресная, ибо результат ложится в один из операндов):
| КОД | ОПЕР1 | ОПЕР2 | РЕЗ | СЛЕД | ПАМ | СПЕЦ

Разрядность соответствующих подпоследовательностей задает число возможных операндов или операций.

Функционирование такой архитектуры изначально задается, например, так:
1. подача питания
2. счетчик команд установлен в 0, регистр состояния установлен в состояние S0, в остальных регистрах -- мусор

А каждый "цикл" выполнения высокоуровневой команды будет выглядеть так (первый цикл процессор выполнял что-то, случайно соответствующее мусору в регистрах, и оно не учитывается при попадании первой команды из памяти):
Очередная команда попала в регистр команд R3 согласно регистру R1, включившему декодер памяти.
Регистр R3 выбрал первую выполняемую микрокоманду из ПЗУ, она попала в Rm.
Далее от регистра Rm -- он особенный, ибо хранит команду, и реализован по этой причине отдельно от блока основных регистров -- линии (не знаю, как их электронщики называют -- линии на схеме, металлические :) ) идут соответственно формату команд выше.
Собственно говоря, этот регистр и хранит цепочку выше, разделенную | в посте.
Часть, хранящаяся в КОД, включает декодер АЛУ, выбирая нужный внутренний функциональный блок, одновременно с этим части ОПЕР1 и ОПЕР2 включают декодеры для каждой из входных шин АЛУ, выбирая только один из регистров (возможно, он один в обоих случаях), а часть РЕЗ включает хоть все возможные для записи регистры (ибо записывать одновременно можно сразу в несколько сущностей, в отличие от чтения одной сущности).
СЛЕД идет к блоку интерпретации (который связан с АЛУ, оценивая результат прошлой операции для ветвлений), выход которого связан с декодером ПЗУ, выбирающим следующую микрокоманду.
ПАМ-линии включают нужный тип операции с памятью -- чтение/запись данных (из или в регистр R4 по адресу в регистре R2 и, независимо от этого, чтение (ибо команды нельзя записывать, как бы это ни нравилось Джону фон Нейману) команды в регистр R3 по адресу R1) -- что будет происходит, пока в ЦП происходит выполнение микрокоманды КОД. Нам нужна выборка команд, ибо команды не всегда выполняются последовательно -- в случае команд перехода по адресу, например (имеется в виду ветвление на уровне машинного языка, а не описанное выше на уровне микрокоманд).
А СПЕЦ -- задавать остальные действия (для простоты системы пока можем считать, что это поле нулевого размера).
И теперь опишем синхронизацию этого всего (это на совести электронщиков, подбирающих кварцевый резонатор на определенной частоте, и правильно строящих схему):
(пункты в рамках одного числа происходят параллельно)
1.а поле КОД включило АЛУ
1.б поле ОПЕР1 включило первый операнд на одну шину
1.в поле ОПЕР2 включило второй операнд на вторую шину
1.г выход ПАМ включил операцию с памятью (которая не завершится в течении этого цикла, память далеко :) )
2. АЛУ посчитало очередной результат
3.а выход АЛУ и поля РЕЗ реализовал запись результата
3.б выход АЛУ и СЛЕД определили следующую микрокоманду
4. счетчик команд R1 увеличился на 1 (пусть у нас простейшая побайтовая машина), задавая выбор новой команды из памяти

И так до бесконечности, очень тупая машина, как видите. Щелкает микрокоманду одну да за другой, и ничего больше не умеет.

То, что я описал начиная с выборки в R3 -- это "цикл" выполнения команды переменной длины, потому как каждая команда может иметь разное число заменяющих ее микрокоманд. А пронумерованный цикл -- это последовательность выполнения одной микрокоманды, и это и есть цикл процессора в классическом понимании.
Последний раз редактировалось sng Вт окт 23, 2018 2:25 am, всего редактировалось 3 раз(а).
sng
Местный
Местный
 
Сообщения: 1333
Зарегистрирован: Чт июн 29, 2017 5:27 pm
Откуда: Кривой Рог, Украина
Пол: Мужской
Профессия: Абитуриент

Пред.След.

Вернуться в Башня старца Фура

Кто сейчас на конференции

Зарегистрированные пользователи: Алексище, светлая_, Exabot [Bot], Google [Bot], Google Adsense [Bot], impulsive, Istanaro, Joker, Kuvaldos, Marat, Meliss, ModernNeon, Orcus, ppsbkwmcrs, Prad, Qlyq, Sarah Connor, SeaSoul, Speranza, sute_girl, vadimr, versik, Vita_n1, Yandex 3.0 [Bot], Yandex [Bot], Красногрудый, Варшава