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/ |