Обмен переменными (C ++, уровень процессора)

  • щелкните здесь, чтобы получить доступ к чату по этому вопросу.
  • Я хочу поменять местами две переменные. и я хотел бы сделать это через конвейер, используя опасность чтения после записи в моих интересах.

    Конвейер:

    OPERXXXXXX FetchXXXXX DecodeXXXX ExecuteXXX WriteBkXXX
    STORE X, Y ---------- ---------- ---------- ----------
    STORE Y, X STORE X, Y ---------- ---------- ----------
    ---------- STORE Y, X STORE X, Y ---------- ----------
    ---------- ---------- STORE Y, X STORE X, Y ----------
    ---------- ---------- ---------- STORE Y, X STORE X, Y
    ---------- ---------- ---------- ---------- STORE Y, X
    

    как мне сказать компилятору сделать это (и именно это) без автоматических блокировок и предупреждающих флагов? вы можете предложить любую литературу / ключевые слова?

    спецификации:

    • -> цель: современные архитектуры, поддерживающие многостанционный (более 4) конвейерную обработку

    • -> это не связано с какой-либо конкретной «проблемой». просто ради науки.

    текущие препятствия:

    • если вы знаете, как игнорировать угрозы для данных, поделитесь.
9
задан CLASSIFIED 9 December 2011 в 18:45
поделиться