D-шина, эквивалентная для Windows

Самые первые компьютеры не были конвейерными. Они получили инструкцию, выполнили все циклы, требуемые инструкциями, и передали следующую инструкцию. В среднем на инструкцию требуется 5-6 циклов. Такое поведение было справедливо для всех компьютеров вплоть до середины 80-х годов, включая 8086 (представленный в 78).

В конце семидесятых люди обнаружили, что конвейер является эффективным способом повышения эффективности. Первым коммерческим чипом была IBM 801, но успех конвейера был с Sun Sparc, Berkeley Risc и MIPS, в середине восьмидесятых.

Идея состоит в том, чтобы разделить все инструкции на одинаковые этапы и связать эти этапы с независимыми ресурсами HW таким образом, чтобы вы могли начать новую инструкцию, не дожидаясь завершения предыдущей, что позволяет начать новую инструкцию за цикл. Чтобы справиться с взаимодействием команд (опасностями), это больше 1 инструкции каждые ~ 1,5 цикла, но выигрыш по сравнению с предыдущим поколением огромен (производительность X3).

Проблема заключается в том, что конвейерная обработка требует специальных наборов инструкций, основанных на простом перемещении данных (называемых наборами команд RISC). Новые компьютеры были основаны на этой схеме, но наборы инструкций старых процессоров не были адаптированы (включая x86).

Чтобы получить выгоду от конвейерного преимущества, сохраняя совместимость с восходящей версией, Intel решила создать микроархитектуру, основанную на двух частях: первая получает инструкции x86 и переводит их в конвейерные (называемые & mu; Ops), а вторая один из них - конвейерное выполнение этих операций. Впервые он был представлен в Pentium Pro (представлен в 1995 году) и присутствует во всех последующих версиях.

Код, который вы даете

lea 0x7 (% eax),% ecx

, переведенный в

, добавляет $ 0x7 ,% eax;
lea% eax,% ecx

является примером перевода & mu; Ops. Перевод особенно полезен, если преобразовать операции ALU с операндом в памяти в более простые операции, выполняющие одну задачу (передача памяти или операция ALU).

В настоящее время все компьютеры являются конвейерными (за исключением некоторых простых & mu; контроллеров или некоторых процессоров, встроенных в FPGA).

Какую бы последовательность инструкций вы не выполняли, они будут выполняться по конвейеру, включая, конечно, те, которые заданы вами. Единственным ограничением является то, что в зависимости от взаимодействия команд могут быть опасности, которые могут привести к замедлению (остановке) конвейера.

Я думаю, что приведенный выше пример соответствует определению конвейерной обработки intel 8086

Конвейер - это характеристика микроархитектуры, а не набора команд. Таким образом, микроархитектура 8086 НЕ была конвейерной, но последующие архитектурные реализации ее набора команд (называемые x86 или IA32) таковы.

, потому что он выполняет несколько инструкций в одном временном интервале

Вы действительно правы, и несколько инструкций могут быть запущены в одном временном интервале, но это еще один метод выше конвейера разрешить параллельное выполнение на уровне команд и называется суперскалярным.

18
задан Thorsten Kück 7 November 2013 в 21:44
поделиться

2 ответа

Выберите свой яд:

http://msdn.microsoft.com/en-us/library/aa365574%28VS.85%29.aspx

следующие механизмы IPC поддерживаются Windows:

  • Буфер обмена
  • Копия данных COM
  • файл DDE
  • , Отображающийся
  • Почтовые слоты
  • Каналы
  • Windows Sockets

RPC , самым близким к DBus является COM.

21
ответ дан 30 November 2019 в 06:39
поделиться

Эталонная реализация D-шины в родом поддерживает Windows. Ранее можно было использовать Проект Windbus . Нет необходимости в эквивалентом, если вы хотите использовать D-Bus.

21
ответ дан 30 November 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: