АЗУ

Тема в разделе "WASM.ELECTRONICS", создана пользователем Paguo_86PK, 18 фев 2012.

  1. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Почему даже в википедии запрос на АЗУ бросает на кухню!?
    Хотя ещё в отцовских книгах справочниках по БИС Запоминающих Устройств за 80-е я читал про загадочное Ассоциативное Запоминающее Устройство. Знаю, есть серии микропроцессоров КР18-каких-то, где есть микросхемы АЗУ.
    А про современные известно лишь что используются в кэшах процессоров.
    Неужели они такие дорогие и имеют узкое направление применений, что в обиходе все думают, что АЗУ - моя фантазия? Налево и направо доказываю их существование и объясняю принцип работы.
    А википедия по сих пор скудна на эту тему.
    Имеется страница Ассоциативная память однако, но это не прямая ссылка от АЗУ.
     
  2. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    а что это по вашему если копнуть глубже красивого имени?

    простой адресный вектор или матрица проще, дешевле, технологичнее. и емчее. а на них уже може делать се то азу, какое хотите.
    например, хэш таблицы - тоже вариант ассоциативности.
    пакеры используют то что можно назвать ассоц. для сокращения объема
    итд. слово "ассоц." не имеет точного определения
     
  3. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    АЗУ - для меня прежде всего вызывает ассоциацию на перцептрон. Просто удивляет, насколько некоторые технологии всё ещё дороги!
    АЗУ, прежде всего, полезны в словарях для переводчиков.
    Помнится ещё в Visual Basic 4 я симулировал терминал 78x30 символов графикой. И каждое знакоместо было не просто графикой, а отдельной кнопкой!
    Перемещения над ними курсора сильно тормозило всю систему.
    Ладно, потом я исправил всё на блиттинг. Но это заставило задуматься: Система тупо пробегает по всем кнопочкам и ищет, куда указывает мышь!
    До этого я предполагал комплексный алгоритм группировки кнопок в отдельные кластеры и субкластеры! :))
    А Вы говорите! Достижения программной стороны облегчают труд инженеров аппаратной. Иначе бы может быть и сигнатуры вирусов сейчас выявлялись на уровне процессора в тех же АЗУ! :-p
     
  4. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    у вас интересно мозги работают. вы почемуто всегда выбираете самый замороченный путь

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

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Думал, погорячился.
    Однако, если использовать в механизме выявления мусорного кода, то вполне реалистичная теория...
     
  6. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Видать слишком дорогое удовольствие. Возможно разработчикам проще и дешевле реализовать требуемые функции с помощью хэша.
    На своем опыте знаю пример - производители чипсетов, используемых в недорогих, но производительных коммутаторах некоторых популярных марок, избрали именно такой путь вместо кошерной коммутационной фабрики на ассоциативной памяти.
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Я так и не понял, а в чём смысл вашей АЗУ если она реализуется программно на обычном ОЗУ+хэш таблица?
     
  8. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Судя по никам Вашим, которые я таки знаю давно, Вас интересует моё личное отношение?
    Ладно.
    Во-первых, отсутствие процессорного кода.
    Во-вторых, отсутствие специального контроллера.
    В-третьих, XXI век. Некоторые технологии, так или иначе, обязаны выйти из тени.

    А главное, мне нравятся такие технологии. Или Вы забыли мои темы: Активная симуляция пассивных элементов, Reversi, Жизнь, Amazing Mechanic, КМОП/ТТЛ, Пассивный и классика - "гвозди"!

    И зная это, продолжаете хэшировать мои мозги!? :)))
     
  9. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Pavia, бывают (хоть и очень редко) задачи, где отказы или задержки из-за хэш-коллизий принципиально недопустимы. Другое дело, что Paguo_86PK ни одной такой задачи не указал.

    Ассоциативная память никогда не будет сама по себе. Обязательно в составе комплекса, управляемого обычным процессором/контроллером. Раз уж процессор/контроллер есть, в большинстве применений оказывается дешевле сделать все именно на нем.
    Технологии что для изготовления обычных контроллеров и памяти, что для ассоциативной памяти - одни и те же. Но для последних стоимость чипов будет на порядки выше, не из-за сложности, а всего лишь из-за маленького размера выпускаемой партии чипов.

    Техноромантик, блин. Оглянитесь вокруг - волчий капитализм на дворе повсюду. Рулит не высокое качество. Рулит приемлемое качество по приемлемой цене. Это ответ на ваш вопрос "ПОЧЕМУ" в первом посте.
     
  10. zxcv

    zxcv New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2011
    Сообщения:
    257
    Dmitry_Milk
    таких задач не так мало. и придуманы уже достаточные ответы
    но в принципе эта задача неразрешима. причина простая - невозможно свести бесконечное к конечному
    те, коллизии будут и при апаратном исполнении
    да и если так уперлось, то дешевле и проще будет сделать на многих банках быстрой памяти подключенных параллельно к плис в качестве параллельного обработчика
     
  11. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    79
    Paguo_86PK
    Так или иначе, уже некоторое время некоторые технологиикниги становятся запрещённымизабытыми. Вероятно, исчезают в глубинах корпорации Амбрелла.
    Принимая во внимание qqwe,
    становится немного понятнее как оно устроено, но не понятнее для чего и как этим пользоваться, а тем более где используется.
    Dmitry_Milk
    Не надо обманываться... Мегакорпорации давно захватили эту планету. В общем всё уже есть, вот только не паблик.
     
  12. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Кстати, зря Вы так про необходимость в контроллере к АЗУ!
    В справочнике читал, что АЗУ бывают тактируемыми и безтактовыми. Иначе говоря, синхронными и асинхронными, если хотите.
    В синхронных используется пробег по всем ячейкам с поиском совпадений.
    В асинхронных - каждая ячейка снабжена схемой сравнения. Они, естественно, дороже.

    Сейчас завтракал и подумал.
    Интересно, в АЗУ обычно данные ищутся не побитно, а словами от 8 до 32 и выше бит.
    А что если организовать АЗУ с произвольным заданием ширины шага в поиске и ширины слова в сравнении? Ещё плюс ко всему, биты маски непроверяемых разрядов!
    Насколько усложнится вся система поиска в синхронном и асинхронном вариантах? :derisive:

    Короче, меня больше всего интересует количественно-качественное соотношение. На сколько ёмкое АЗУ можно построить, используя самые масштабные из доступных ПЛИС!? Вот это - чудовищно интересный вопрос! :-p

    Известно, что у военных компьютеров архитектуры включают и ПЛИС и АЗУ. Тут сами писали тоже. Однако, задачи, решаемые в тех архитектурах, лишь точечно пересекаются изредка с задачами в бытовых условиях. В основном, это хэши Java и SQL, и т.д.

    Сейчас вот подумал. Видеокарте куда легче было бы найти кнопку, куда указывает мышь, чем самому процессору пробегать. О чём я выше и писал. При частоте картинки 75Гц получится задержка 13мс, когда процессор мог бы заниматься иными задачами. Пусть программно поиск шёл бы в тысячу раз быстрее, но всё-таки это не та задача, которая обязательно должна влиять на производительность.

    Видеокарты с аппаратной поддержкой курсора появились относительно недавно. Спрашивается (мною), почему контроллер мыши не сообщается с графической системой непосредственно? Чтобы при перемещении мыши по коврику с перемещением её по экрану не тратился бы и байт программного кода, включая обработчик прерывания!
    И это включая тень, отбрасываемую указателем, и анимацию песочных часов.
    А в лучшем варианте, переключение на стрелки при попадании курсора на границу окон!
    Идиотизм? Нет. Это ...

    Идеология! Как в UNIX: Делай одну вещь, но делай хорошо!
    Стоп. Следуя ей, видеокарта должна тупо отображать массив растра в видео сигнал. Верно?
    Однако. Расширяя горизонт идеологии, следует внести поправку:
    Делай одну вещь так хорошо, чтобы не грузить своими обязанностями других даже на 1%!
    Иначе говоря, мышь и видеокарта - переферия, без которой (в серверах) можно обойтись в 99%. А значит, должна быть сеть пересекающихся переферийных устройств с их сообщением непосредственно.
    Т.е. видеокарта аппаратно связана с мышью не только для перемещения указателя по экрану, но и сам процессор считывает координаты мыши из видеоадаптера, а не с PS/2 / USB! Причём, получая исчерпывающую информацию: В каком окне находится указатель? К какому элементу относятся координаты? и т.д.
    Индустриально это не задача, как поддержка шейдеров. Я уже говорил, что даже аппаратно, хотя и ограниченно, может поддерживаться.
    Иными словами, в современной системе центральный процессор должен отдыхать от дурацких задач!

    В идеале даже при копировании DVD->HDD и прожиге HDD->DVD двум устройствам процессор посылает карту, по которой они сами сообщаются, пересылая нужные кластеры в нужном порядке к DVD или заполняя нужные кластеры потоком данных с DVD.
    Забегая вперёд, сам скажу, что может быть и клавиатуру к видеоадаптеру подключить, чтобы печаталось быстрее!? :))
    Понимаю Ваш смех.

    Однако, всё началось (в этой теме) с АЗУ и я говорю, что меня возмущает то, что огромный потенциал просто незадействован!
    У меня Radeon 7000, хоть и слаб по нынешным временам. Но для регулярной игры в "Сапёра" и "Реверси" вполне годится! И мне жаль, что некоторую работу выполняет центральный процессор, а не Radeon! Ведь у меня второй используется процентов на 5!
     
  13. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
     
  14. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    79
    Paguo_86PK
    Круть!
    Мы тоже за распределённую многозадачность, но увы, приходиться как-то синхронизировать доступ к данным.
    и чем большей порцией одна железяка читает данные, тем к большей порции не могут получить доступ другие железяки.
     
  15. zxcv

    zxcv New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2011
    Сообщения:
    257
    Paguo_86PK
    объясняю как работает хэш таблица, тк вы тоже ленитесь читать перед тем как писать.
    самый простейший случай

    Data* hash_table[MAX_ADDR] = {0};

    unsigned Hash(char* k, int len){
    unsigned r = 0;
    for(; len > 0 && *k; len--, k++)
    r ^= (unigned)*k << (len % (sizeof(unsigned) - sizeof(char)));

    return r % MAX_ADDR;
    }

    void write_data(Key* k, int klen, Data* d){
    unsigned addr = Hash(k, klen);

    hash_table[addr] = d;
    }

    Data* read_data(Key* k, int klen){
    unsigned addr = Hash(k, klen);

    return hash_table[addr];
    }

    вот и вся ваша ассоциативная память. зачем ради этого железо мучить?
    есть и другие системы поиска. почитайте. это интересно.
     
  16. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Что Вы этим хотели сказать?
    Могли бы поступить ещё проще и не надрываться с Copy-Paste
    Код (Text):
    1. ; ebx = адрес массива
    2. ;  al = искомый символ
    3.     xlatb
    Простейщий алгоритм перекодировки хэша.
    Или Вы надо мной издеваетесь, либо не понимаете всей тонкости.
    В Dendy видеоадаптер ограничен количеством спрайтов из-за очень примитивной оссоциативности.
    Я, по роду хобби, ассоциативностью занимался если не всегда, то тогда, когда в задачах она всплывала. Например:
    1) Имеется схема растровой развёртки. Необходимо имитировать векторную графику на лету. Т.е. брать из буфера координаты 1024 векторов и искать те, которым принадлежит очередной пиксел развёртки.
    1> Здесь каждая ячейка памяти X1Y1X2Y2 - целая схема арифметических устройств-делителей. Если входящий XY-пиксел лежит на XY1XY2-линии, ячейка отзывается. Причём арифметика устройства - бестактовая!
    1. Даже реализация одного ассоциативного вектора (здесь ассоциативность себя с пикселем) имеет значительные затраты аппаратных средств!
    2) Ещё в детстве я [o]мечтал[/o] придумать ассоциативные телефонные аппараты, которые включены параллельно и сами различают свой номер.
    2> Типичный пример того, что ещё с детства я начинал искать сложные пути! Каждый ТА ассоциирует себя с номером, который набирает вызывающий. Если ассоциация удачна, вызываемый ТА сам звонит и отсылает вызывающему ТА гудки.
    2. Пример "честной" (т.к. предпологается, что абонент не перестраивает заводские настройки аппарата для подслушивания) связи без АТС коммутирования. По сути, современный BlueTooth так и работает. Так-как дорабатывая ТА "детства", я бы разложил телефонный вектор по частотам как матрёшку (самая первая цифра - самая высшая поднесущая, вторая - одна из десяти следующей поднесущей, и т.д.).
    3) HALT...
    Вам же лень читать мегапосты :)))
     
  17. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Кстати. Года четыре назад пытался придумать процессорное устройство, обрабатывающее не машииный код, а машинный текст.
    Т.е. дешифратор команд брал 128 бит кода, по первому байту определал класс операции. Все последующие байты должны содержать такой же класс. Искался байт, где цепочка разрывалась. И 128 бит сдвигались влево до места разрыва для следующей дешифрации
    Код (Text):
    1. __INIT; // Init the processor
    2. __R13=0xED; // Init system register
    3. TestRAM(); // Find the "TestRAM" label, push it for all next calls as associative cell and call
    4. __R0="Please wait..."; // Store register as pointer to string
    5. Display(__R0); // Find, push and call this function
    6. 1__R0=0; // Equal MOV BYTE PTR[R0],0
    7. __R0=1;__R9=15-__R0; // ...
    8. __HALT; // End
    Тем самым, машинный код близок к Си-подобному листингу. Причём одна операция требует от 3-х тактов. Так, R0++ требует один такт на дешифрацию имени и один на дешифрацию инкрементора.
    А 4R0=0 требует такт на дешифрацию 4R0 (здесь DWORD PTR R0), два такта на "=0" и такт на запись 0 по адресу из R0...

    В общем, я очень серъёзно тогда этим занимался. Требовалось для начала 16 ПЗУ с прошивкой для дешифрации цепочки. Где каждое ПЗУn+1 несколькими адресными входами подключается к выходам данных ПЗУn для поддержки/разрыва связки символов с одним классом.
    Получается тот же персер, но безтактовый.
    Если усложнить до нескольких дешифраторов, можно R0++ дешифровать за один такт. Потребуется увеличения ПЗУ до 32 + 2 сдвигателя до 120 битов влевом с точностью 8 бит.

    Как ни крути, схема выходила занятная.
    Требовался ещё механизм предварительной трассировки для построения иерархии программы и расстановки меток в ассоциативной таблице.

    И всё ради того, чтобы забыть и забить на машинный код. А программировать чисто в Си!

    Хоть задача и безперспективная. Но занятная, как перцептрон!

    Интересно, ведутся ли подобные параллельные разработки?

    P.S.: Потом проект преобрёл новую ветвь развития, когда имена команд сжимались, быстрее и легче дешифровывались, а также легко отображались в редакторе текстом.
    Например: 41 42 02 41 11 или эквивалент 41 42 41 02 11 означает читать 2 байта (41 42) как число 0x4142 и читать один байт 41 как команду "A".