Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 15:58

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Infinity CPU
СообщениеДобавлено: Пт ноя 24, 2017 03:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Неожиданно образовалось развитие ядра Горыныч. Горыныч оказался полезен тем, что
1. Позволяет без дополнительных затрат делить процессорное время от 1 до 8 потоков выполнения. Для низкоскоростных периферийных устройств запредельная частота работы ядра вобщем-то не требуется, а вот одновременная работа нескольких подпрограмм (или почти одновременная) гораздо полезнее.
2. Горыныч не навязывает именно стековый режим работы. Точнее, при стековой вычислительной модели он вполне программируется на Си-подобной языке (от true-grue), имея соответствующую поддержку, ненужную Форту, но полезную для кода, генерируемого таким компилятором.

Технически, в ряду моих ядер, Горыныч был 7-го поколения (если считать именно принципиальные изменения микроархитектуры, а не просто версии). Соответственно, следующая версия - 8-я, а что у нас главное при работе с программами и вообще САПР? Правильно, выбрать имя :) Ну и чтобы была хотя бы притянутая за уши ассоциация, восьмерка после поворота превратилась в символ бесконечности, после чего проекты в САПР можно называть Infinity.

Какой следующий шаг оказалось возможно сделать после Горыныча. Раз в Горыныче поддержан "двойной" режим программирования с точки зрения компилятора, новое ядро логично сделать с поддержкой такого режима в аппаратуре - чтобы при необходимости процессор мог работать как обычный регистровый, не занимаясь лишними перемещениями данных из стека/в стек. Отсюда получилась архитектура с двумя выделенными регистрами данных, которые схемотехнически подключены к памяти данных и могут являться продолжением стека... но могут и не являться. Поэтому та же команда сложения может выполнять два варианта действий:
1. RegA = RegA + RegB
2. A, B -- A+B , с соответствующим изменением указателя стека и догрузкой нового значения B из памяти данных

Ожидаемый эффект - некоторое повышение рабочей частоты из-за устранения блока памяти из критического пути. Блоки памяти в ПЛИС вообще достаточно быстрые, но очен любят быть конвейеризованными. Поэтому послать данные из памяти сразу в АЛУ можно, но частота будет... приемлемой. А вот схемотехника, основанная на регистров, позволяет поднять частоту до довольно больших значений. Главное, чтобы из памяти данные поступали сразу в регистры, а не "в регистры через арифметические операции".

После завершения составления списка требуемых транзакций будет попробован RTL.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Infinity CPU
СообщениеДобавлено: Пт ноя 24, 2017 04:42 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
хм...
Т.е. с точки зрения повышения скорости лучше иметь два выделенных регистра T, S (top, second) и хвост стека в памяти с регистром-указателем? Или на автомате/фоном кешировать два верхних элемента стека в регистры (память вроде там была двухпортовая, можно делать это в один приём)...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Infinity CPU
СообщениеДобавлено: Пт ноя 24, 2017 14:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Да, с точки зрения получения максимальной частоты лучше, чтобы все крутилось в достаточно компактной области, содержащей LUT и триггеры. Фактически весь основной тракт данных процессора будет сделан строго в ячейках, а если еще привлекать память как операнд, образуется достаточно длинная линия от блока памяти, которая напрашивается на конвейеризацию. Двупортовая память в целом подходит не только для чтения двух операндов, а еще и для записи того, что было сделано предыдущей командой, поэтому один из портов можно отдавать на запись, а вот второй действительно на чтение операнда следующей команды. Есть еще, конечно, вариант с чередованием чет/нечет, для стека это удобно. Тогда можно взять два блока памяти, и использовать для чтения по одному порту от каждого, а вдвоем они как раз будут способны выдать два соседних числа со стека. Но это выглядит уже решением следующего порядка, а на первых порах хочется спроектировать архитектуру системы команд так, чтобы она оптимально подходила к компилятору. Причем, что важно в контексте форума, не просто к компилятору, а к связке инструментов Форт+ЯВУ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Infinity CPU
СообщениеДобавлено: Пт ноя 24, 2017 21:23 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
по-моему....проще с компилятором баловаться - он-то штука софтовая....изголяться можно как угодно)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB