OSDev
http://osdev.su/

давай новые архитектуды двигать
http://osdev.su/viewtopic.php?f=18&t=1056
Страница 1 из 5

Автор:  scuter [ 22 фев 2015, 12:01 ]
Заголовок сообщения:  давай новые архитектуды двигать

помимо x86 есть ещё и другие архитектуры процессоров,
может двинуть чего нибудь вроди powerpc (ppc).

Автор:  imsushka [ 22 фев 2015, 12:38 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

да без проблем

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

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

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

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

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

Автор:  scuter [ 22 фев 2015, 13:37 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

Автор:  imsushka [ 22 фев 2015, 14:01 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

scuter писал(а):
Замечательно, теперь осталось ознакомится с (boot-ом) принципом запуска
и механизмом переключения задач.
imsushka писал(а):
без поддержки языков высоко уровня

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


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

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

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

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

Автор:  Yoda [ 22 фев 2015, 14:16 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

Отвечу в этой теме.

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кб памяти, верно?
Зачем на каждую задачу хранить отдельный кеш? Как быть с когерентностью кешей между разными задачами?

Автор:  imsushka [ 22 фев 2015, 14:28 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

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

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

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

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

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

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

Автор:  Yoda [ 22 фев 2015, 15:09 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

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

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

Автор:  scuter [ 22 фев 2015, 15:21 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

чего то я запутался, с этим всем делом.

Автор:  imsushka [ 22 фев 2015, 15:36 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

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

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

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

Автор:  Yoda [ 22 фев 2015, 15:55 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

imsushka писал(а):
кеш 1к данных/1к команд на задачу

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

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

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

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

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

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/