A main memory scheduler includes a store, and stores therein requests for
accessing main memory (such as a read request, a write request, or a
refresh request). Normally, the main memory scheduler issues requests from
the store to the main memory in an order different from the order in which
the requests are received, for example, to avoid bank conflicts. In this
example, the main memory scheduler issues a first request to a first
memory bank that is not coincident with (and in case of dependent banks,
not adjacent to) a second memory bank (that is being currently accessed)
prior to issuing a second request to a memory bank that is coincident with
the (or adjacent to) second memory bank. Moreover, the main memory
scheduler issues a refresh request prior to issuing a read request or a
write request even if the refresh request was most recently received,
thereby to prioritize the refresh request ahead of read and write
requests. Similarly, the main memory scheduler prioritizes a majority of
read requests ahead of write requests, so that a processor that originates
a read request is not normally stalled by a previously issued write
request, as would be the case in first-in-first-out (FIFO) issuance of
memory requests. The main memory scheduler performs FIFO processing, for
example, when a later-received read request and an earlier-received write
request both access the same location in main memory, or when the number
of pending write requests exceeds a predetermined limit. Such
prioritization of requests can be made programmable, depending on signals
held in storage elements that are included in the main memory scheduler.
Ein Hauptspeicher Scheduler schließt einen Speicher mit ein und speichert darin Anträge für das Zugänglich machen des Hauptspeichers (wie ein gelesener Antrag, ein schreibenantrag oder ein erneuernantrag). Normalerweise gibt der Hauptspeicher Scheduler Anträge vom Speicher zum Hauptspeicher in einem Auftrag heraus, der zu dem Auftrag unterschiedlich ist, in dem die Anträge z.B. Bankkonflikte zu vermeiden empfangen werden. In diesem Beispiel gibt der Hauptspeicher Scheduler einen ersten Antrag bis eine erste Gedächtnisbank heraus, die nicht mit (und falls von den abhängigen Bänken, nicht neben) einer zweiten Gedächtnisbank (die z.Z. erreicht wird), vor der Ausgabe eines zweiten Antrags zu einer Gedächtnisbank zusammentreffend ist, die mit der (oder neben) zweiten Gedächtnisbank zusammentreffend ist. Außerdem gibt der Hauptspeicher Scheduler einen erneuernantrag vor der Ausgabe eines gelesenen Antrags oder des schreibenantrags, selbst wenn der erneuernantrag vor kurzem empfangen wurde, Ù?¿erneuernantrags vor gelesen dadurch zu geben und Anträge zu schreiben heraus. Ähnlich gibt der Hauptspeicher Scheduler einer Majorität gelesener Anträge vor schreiben Anträge, damit ein Prozessor, der einen gelesenen Antrag entsteht, nicht normalerweise durch vorher herausgegeben schreiben Antrag festgeklemmt wird, wie der Fall in der Austeilung der Fifo (Fifo) der Gedächtnisanträge seien Sie. Der Hauptspeicher Scheduler führt verarbeitende Fifo durch, z.B. wenn ein spät-empfangener gelesener Antrag und, die früh-empfangen werden, dem beidem Antrag Zugang die gleiche Position in Hauptspeicher schreiben oder wenn, schreiben die Zahl schwebendem Anträge übersteigt eine vorbestimmte Begrenzung. Solches prioritization von Anträgen kann programmierbar gebildet werden, abhängig von den Signalen, die in den Speicherelementen gehalten werden, die im Hauptspeicher Scheduler eingeschlossen sind.