How does the repository for loading forwarding happen in case of unaccepted access to memory?

I know the architecture of the load / store queue to simplify storage for loading and eliminate ambiguous speculative loads. This is achieved by mapping load and storage addresses.

This address matching method will not work if the earlier store has an inconsistent address and the load depends on it. My question is that if this second load is out of order, how does it become ambiguous in earlier stores? or which politicians use modern architectures to handle this condition?

+4
source share
2 answers

For ISAs such as x86, loads and storage can be several bytes wide and not aligned. Storage can write in one or more bytes, where the load can read a subset of them. Or, on the other hand, all the data recorded by the repository may be a subset of the data read by the next load.

, ( ), . , , , LSQ , ( ) ( , , ..). LSQ , /, ( <= ", " < + ), , .

, ( ) , , ( , , ). , (, , ), . , , , .

+1

, , . , , , , , , .

Long

, , , , .

- . , , - .

- , , , CAM . , , ( ). , , ( L1, ).

, , , , . , , , , , , , L1.

, , . . , : IP- , ( ), . , , , , , , . , , , , , (, , ) , . 1

, . , , , .

, : . - , , .

:

  • . , , , .
  • . , , .
  • .

. ( ) , , , (2) .

1 (1), (2) (3).

(1), , , , . , , , .

, , : (, 32- ), : 4- 8- ( + 4), ( 0,1,2,3 4 ).

, CAM, . , ( ). , , " " (1), ​​ , , , . .


1 , , WARF patents .

2 . , , , , .

+1

Source: https://habr.com/ru/post/1669617/


All Articles