OSDev

для всех
Текущее время: 18 ноя 2017, 18:43

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: давай новые архитектуды двигать
СообщениеДобавлено: 22 фев 2015, 12:01 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
помимо x86 есть ещё и другие архитектуры процессоров,
может двинуть чего нибудь вроди powerpc (ppc).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 12:38 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
да без проблем

1024 байт регистровый файл с кратным доступом, максимальный операнд 256 бит
64 бита адресное пространство
32 бита команда
6 бит код команды ( RISC , сейчас есть 24 команды )
4 бита тип адресации
11 + 11 бит адрес источника/приемника/непосредственных данных

3х уровневые таблицы виртуальной памяти (х86)

без поддержки языков высоко уровня
возможно добавление команд работы с плавающей запятой, фиксированной запятой, матричные команды

переключение контекста задачи - запись в специальный регистр номера регистрового файла
зависит от тех процесса, от 8 до 1024. 1 файл 8 килобайт.
содержит 2х1024 байта регистров, 1024 б кеш данных. 1024 б кеш команд, 1024 TLB и еще 3 кило запас

можно реализовать аппаратный шедулер


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 13:37 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
Замечательно, теперь осталось ознакомится с (boot-ом) принципом запуска
и механизмом переключения задач.
imsushka писал(а):
без поддержки языков высоко уровня

а вот с этим вопросом не уверен, языки высокого уровня вроде бы поддерживаются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 14:01 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
scuter писал(а):
Замечательно, теперь осталось ознакомится с (boot-ом) принципом запуска
и механизмом переключения задач.
imsushka писал(а):
без поддержки языков высоко уровня

а вот с этим вопросом не уверен, языки высокого уровня вроде бы поддерживаются.


какая разница как загружать ? в пзу сидит с 0 адреса или с 0xFFFF FFFF FFFF 0000
или грузится с харда с 1 сектора в 0 адрес н-килобайт

загрузчик это последнее о чом думать надо

я ж написал - переключение задач - запись в специальный регистр номера регистрового файла (номер задачи)

поддержка языков высокого уровня - работа со стеком (в х86 команды enter и leave )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 14:16 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Отвечу в этой теме.

imsushka писал(а):
128 и 256 потому что не хотелось через несколько лет вспоминать что 640 килобайт хватит на все

Тогда почему нет 512 бит и выше (вплоть до 8192 бита)? Что, если через несколько лет не хватит 256 бит?
Что будет, если используется косвенная адресация 128 или 256-битного регистра?

imsushka писал(а):
При адресации регистра используется его относительный адрес, который дополнительно указывает размерность регистра. Например: регистры с адресами 0-1023 байтные, 1024-1535 словные (16 бит) и т.д. При этом регистр с адресом 0 является младшим байтом регистра 1024.

Данная схема, с учётом ограничения в 256 бит, использует адреса до 2015 включительно. Что будет, если использовать адреса 2016-2048?
Как организован стек? Где находится указатель стека и как передаются параметры подпрограмме?

imsushka писал(а):
переключение контекста задачи - запись в специальный регистр номера регистрового файла зависит от тех процесса, от 8 до 1024.

Я правильно понял, что есть ограничение в 8-1024 задачи?

imsushka писал(а):
1 файл 8 килобайт.
содержит 2х1024 байта регистров, 1024 б кеш данных. 1024 б кеш команд, 1024 TLB и еще 3 кило запас

То есть, на каждую задачу где-то вне адресного пространства выделено по 8кб памяти, верно?
Зачем на каждую задачу хранить отдельный кеш? Как быть с когерентностью кешей между разными задачами?

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 14:28 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Цитата:
Тогда почему нет 512 бит и выше (вплоть до 8192 бита)? Что, если через несколько лет не хватит 256 бит?
Что будет, если используется косвенная адресация 128 или 256-битного регистра?

можно было бы и 512 и 1024, но при 256 все четко вписалось в 32 битную команду

Цитата:
Данная схема, с учётом ограничения в 256 бит, использует адреса до 2015 включительно. Что будет, если использовать адреса 2016-2048?
Как организован стек? Где находится указатель стека и как передаются параметры подпрограмме?

32 специальных регистра
вне регистрового файла

Цитата:
Я правильно понял, что есть ограничение в 8-1024 задачи?

технологическое ограничение, 8к*1024 = 8 мег. если получиться больше то можно больше.
если нужно больше задач, то действуем по старинке.
сброс рег. файла в память и загрузка на его место нового.
правда тормоза будут

Цитата:
То есть, на каждую задачу где-то вне адресного пространства выделено по 8кб памяти, верно?
Зачем на каждую задачу хранить отдельный кеш? Как быть с когерентностью кешей между разными задачами?

внутри проца, как обычный РОН, не кеш бааальшой, а регистровый файл
1 задача 1 адресное пространство 1 кеш


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 15:09 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
imsushka писал(а):
внутри проца, как обычный РОН, не кеш бааальшой, а регистровый файл
1 задача 1 адресное пространство 1 кеш

Так всё же непонятно, как быть с когерентностью кешей. Поясню на примере. Вот активная сейчас задача пишет данные по какому-то адресу, который скеширован в другой задаче. Что будет, когда мы переключимся на неё?
С другой стороны, 1024*2048 = 2М кеш-памяти (а с учётом того, что это ассоциативная память, реально намного больше) присутствует на кристалле. Но кеш-память - сложно организованный, многоуровневый, чрезвычайно быстрый и очень ценный ресурс. Из этих 2М реально работают только 2к, выделенных для текущей задачи. Получается, что эффективность использования кеш-памяти составляет 2к/2М = 0.1%. Верно?

UPD
imsushka писал(а):
32 специальных регистра
вне регистрового файла

Да, совсем забыл спросить. Я так понял, в их числе и указатель стека. А что с этими специальными регистрами при аппаратном переключении задачи?

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 15:21 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
чего то я запутался, с этим всем делом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 15:36 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Yoda писал(а):
Так всё же непонятно, как быть с когерентностью кешей. Поясню на примере. Вот активная сейчас задача пишет данные по какому-то адресу, который скеширован в другой задаче. Что будет, когда мы переключимся на неё?
С другой стороны, 1024*2048 = 2М кеш-памяти (а с учётом того, что это ассоциативная память, реально намного больше) присутствует на кристалле. Но кеш-память - сложно организованный, многоуровневый, чрезвычайно быстрый и очень ценный ресурс. Из этих 2М реально работают только 2к, выделенных для текущей задачи. Получается, что эффективность использования кеш-памяти составляет 2к/2М = 0.1%. Верно?

кеш 1к данных/1к команд на задачу
при переключении сброса кеша не происходит
получается 1 задачный процессор

есть кеш 2 уровня общий для всех

Цитата:
UPD
Да, совсем забыл спросить. Я так понял, в их числе и указатель стека. А что с этими специальными регистрами при аппаратном переключении задачи?

ничего
переключается ВСЕ


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2015, 15:55 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
imsushka писал(а):
кеш 1к данных/1к команд на задачу

а поскольку аппаратных задач до 1024, то существует до 1023 неработающих кешей по 2к каждый, правильно?

imsushka писал(а):
при переключении сброса кеша не происходит

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

imsushka писал(а):
ничего
переключается ВСЕ

В вашей диаграмме не отмечено, где хранятся теневые копии этих специальных регистров. Вероятно, в "3к ещё чего-нибудь" :).

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB