-
Ausführungsformen und Implementierungen der Erfindung beziehen sich auf das Routing von Transaktionen zwischen Master- und Slave-Vorrichtungen innerhalb eines System-on-Chip (SOC), zum Beispiel eines Mikrocontrollers, und insbesondere auf das Verwalten von Zugriffsbeschränkungen auf bestimmte Slave-Vorrichtungen.
-
Um zur Gewährleistung der Zuverlässigkeit eines System-on-Chip beizutragen, kann es erforderlich sein, den Zugriff einer oder mehrerer Master-Vorrichtungen auf bestimmte Ressourcen (Slave-Vorrichtungen) zu beschränken. Ein solches Merkmal wird derzeit von einem Fachmann mit dem Begriff „Isolation“ bezeichnet.
-
Die Verwaltung dieser Zugriffsbeschränkungen ist in der Regel komplex in der Umsetzung, insbesondere wenn es sich um eine dynamische Verwaltung handelt.
-
Es besteht daher die Notwendigkeit, eine solche Verwaltung vorzusehen, die leicht auszuführen und umzusetzen ist, insbesondere wenn diese Verwaltung dynamisch ist, z.B. wenn sie von der beabsichtigten Anwendung für das System-on-Chip abhängig ist.
-
Gemäß einem Aspekt wird ein System-on-Chip vorgeschlagen, das eine Reihe von Master-Vorrichtungen umfasst, zum Beispiel einen oder mehrere Prozessoren, eine Direct Memory Access-Steuerung (DMA), usw.
-
Einige Master-Vorrichtungen verfügen jeweils über eine Programmierschnittstelle. Eine Master-Vorrichtung mit einer Programmierschnittstelle wird im Folgenden mit dem Begriff „erste Master-Vorrichtung“ bezeichnet.
-
Der Satz von Master-Vorrichtungen kann auch eine oder mehrere Master-Vorrichtungen ohne Programmierschnittstelle umfassen. Eine Master-Vorrichtung ohne Programmierschnittstelle, z.B. ein Prozess, wird im Folgenden mit dem Begriff „zweite Master-Vorrichtung“ bezeichnet, um sie von einer ersten Master-Vorrichtung zu unterscheiden.
-
Das System-on-Chip umfasst zusätzlich eine Reihe von Slave-Vorrichtungen. Die Programmierschnittstellen sowie die Slave-Schnittstellen bestimmter Vorrichtungen, wie beispielsweise Speicher oder Peripheriegeräte oder Ressourcen im Allgemeinen, werden als Slave-Vorrichtungen betrachtet. Die Slave-Schnittstellen unterscheiden sich von den Programmierschnittstellen.
-
Das System-on-Chip umfasst auch eine Verbindungsschaltung (einem Fachmann bekannt als „Verbindung“), die zwischen dem Satz von Master-Vorrichtungen und den Slave-Vorrichtungen gekoppelt ist.
-
Jede Master-Vorrichtung ist konfiguriert, um Transaktionen (zum Beispiel Schreib- oder Lese-Transaktionen) an mindestens eine der Slave-Vorrichtungen zu übertragen.
-
Jeder Transaktion, die von einer ersten Master-Vorrichtung ausgegeben wird, wird ein Attribut zugeordnet, das in der Lage ist, mindestens zwei Attributwerte anzunehmen, die mindestens zwei gewünschten Zuständen für diese erste Master-Vorrichtung entsprechen.
-
Bezüglich der mindestens einen zweiten Master-Vorrichtung ohne Programmierschnittstelle ist die Vorrichtung auch mit der Verbindungsschaltung verbunden und so konfiguriert, dass sie dem Attribut ihrer Transaktionen einen Festwert aus den mindestens zwei Attributwerten zuweist, der für diese zweite Master-Vorrichtung einem der gewünschten Zustände entspricht.
-
Dieser feste Attributwert ist beispielsweise in der zweiten Master-Vorrichtung hartkodiert, was ihm de facto einen festen Zustand verleiht.
-
Jede Slave-Vorrichtung ist zusätzlich einem Identifikator (zum Beispiel ein Wort mit einem oder mehreren Bits) zugeordnet, der in der Lage ist, mindestens zwei Werte anzunehmen, die jeweils mindestens zwei gewünschten Eigenschaften entsprechen, die für die Slave-Vorrichtung gewünscht werden. Eine erste Eigenschaft, die für eine Slave-Vorrichtung gewünscht wird, kann beispielsweise die Tatsache sein, dass auf sie nur von einer oder mehreren genehmigten Master-Vorrichtungen aus dem Satz von Master-Vorrichtungen zugegriffen werden kann, und eine zweite Eigenschaft, die für diese Slave-Vorrichtung gewünscht wird, kann die Tatsache sein, dass auf sie von jeder Master-Vorrichtung aus dem Satz von Master-Vorrichtungen zugegriffen werden kann.
-
Mit anderen Worten, eine Slave-Vorrichtung mit der ersten Eigenschaft gilt als „isoliert“, während sie als „nicht-isoliert“ gilt, wenn sie die zweite Eigenschaft hat.
-
In diesem Fall sind die beiden Eigenschaften komplementär zueinander, d. h. eine Slave-Vorrichtung kann nicht beide Eigenschaften gleichzeitig haben und kann auch nicht keine von beiden besitzen. Die beiden Werte, die sie identifizieren zu diesen beiden Eigenschaften zu entsprechen, sind also beispielsweise einfach die beiden logischen Werte eines Bits.
-
In Bezug auf eine Master-Vorrichtung des Satzes von Master-Vorrichtungen, unabhängig davon, ob es sich um eine erste oder zweite Master-Vorrichtung handelt, ist ein erster Zustand, der für diese Master-Vorrichtung gewünscht wird, die Tatsache, dass sie berechtigt ist, auf eine Slave-Vorrichtung zuzugreifen, und ein zweiter gewünschter Zustand für diese Master-Vorrichtung ist die Tatsache, dass sie nicht berechtigt ist, auf eine oder mehrere ausgewählte Slave-Vorrichtungen aus dem Satz von Slave-Vorrichtungen zuzugreifen.
-
Mit anderen Worten, eine Master-Vorrichtung mit dem ersten Zustand kann auf jede Slave-Vorrichtung zugreifen, zum Beispiel unabhängig davon, ob diese „isoliert“ ist oder nicht, während eine Master-Vorrichtung mit dem zweiten Zustand beispielsweise nicht auf „isolierte“ Slave-Vorrichtungen zugreifen kann.
-
Darüber hinaus erbt jede erste Master-Vorrichtung automatisch die Eigenschaft ihrer Programmierschnittstelle (die, wie oben erwähnt, als Slave-Vorrichtung betrachtet wird) und ist konfiguriert, um dem Attribut ihrer Transaktionen einen der Werte des Attributs in Abhängigkeit vom Identifikatorwert ihrer Programmierschnittstelle zuzuweisen.
-
Das System-on-Chip umfasst zusätzlich Filtermittel, die in Gegenwart einer für eine Slave-Vorrichtung bestimmten Transaktion so konfiguriert sind, dass sie den Wert des entsprechenden Attributs mit dem Slave-Wert des Slave-Identifikators dieser Slave-Vorrichtung vergleichen und abhängig vom Ergebnis des Vergleichs die Transaktion verweigern oder nicht.
-
Die Tatsache, dass jede erste Master-Vorrichtung automatisch die Eigenschaft ihrer Programmierschnittstelle erbt und dem Attribut ihrer Transaktionen einen der Werte des Attributs in Abhängigkeit vom Identifikatorwert ihrer Programmierschnittstelle verleiht, vereinfacht die Verwaltung der Zugriffsbeschränkungen sowie die Hardware-Implementierung erheblich.
-
Wenn also die Programmierschnittstelle einer ersten Master-Vorrichtung als „isoliert“ betrachtet wird, wird diese erste Master-Vorrichtung automatisch isoliert, d. h. sie könnte nicht nur Zugriff auf die isolierten Slave-Vorrichtungen haben, sondern auch auf diejenigen, die nicht isoliert sind.
-
Wird dagegen die Programmierschnittstelle einer ersten Master-Vorrichtung als „nicht-isoliert“ betrachtet, so wird diese erste Master-Vorrichtung automatisch nicht isoliert, d. h. sie hat keinen Zugriff auf die isolierten Slave-Vorrichtungen.
-
Es ist daher nicht erforderlich, insbesondere ein dediziertes externes Signal bereitzustellen, um die erste Master-Vorrichtung zu isolieren oder nicht.
-
Folglich definiert die erste Master-Vorrichtung den Attributwert ihrer Transaktionen in Abhängigkeit vom Identifikatorwert ihrer Programmierschnittstelle, wodurch wiederum die Verwendung eines bestimmten externen Signals zur Definition des Attributwerts vermieden wird.
-
Während die Identifikatorwerte der Slave-Vorrichtungen in den Registern des System-on-Chip festgelegt werden können, ist es in einigen Anwendungen besonders vorteilhaft, diese Werte für mindestens einen Teil der Slave-Vorrichtungen programmieren zu können.
-
Wie vorstehend angegeben, umfassen die Slave-Vorrichtungen die Programmierschnittstellen und die Slave-Schnittstellen bestimmter Vorrichtungen, zum Beispiel periphere Speicher oder Ressourcen im Allgemeinen.
-
Gemäß einer Ausführungsform ist vorteilhaft der Identifikatorwert von mindestens einer der Slave-Schnittstellen sowie der Identifikatorwert von mindestens einer der Programmierschnittstellen programmierbar.
-
Darüber hinaus umfasst das System auch Programmiermittel, die konfiguriert sind, um die programmierbaren Identifikatorwerte über die Verbindungsschaltung zu programmieren.
-
Als nicht einschränkendes Beispiel können die Programmiermittel mindestens ein erstes programmierbares Register umfassen, das mindestens einer der Programmierschnittstellen zugeordnet ist und dazu bestimmt ist, den Identifikatorwert zu enthalten, der dieser Programmierschnittstelle zugeordnet ist, mindestens ein zweites programmierbares Register, das mindestens einer der spezifischen Vorrichtungen zugeordnet ist und den Identifikatorwert enthalten soll, der dieser spezifischen Vorrichtung zugeordnet ist, einen Programmierblock, zum Beispiel eine Hardwaremaschine oder häufiger Anweisungen eines Initialisierungscodes, der so konfiguriert ist, dass er das mindestens eine erste programmierbare Register und das mindestens eine zweite programmierbare Register über die Verbindungsschaltung programmiert, und ein Verbindungselement, zum Beispiel ein oder mehrere „Drähte“, abhängig von der Größe des Identifikators, zwischen dem mindestens einen ersten programmierbaren Register und mindestens einer der Programmierschnittstellen.
-
Diese „Draht“-Verbindung ist besonders einfach zu realisieren, was die dynamische Verwaltung von Zugangsbeschränkungen erleichtert.
-
Besonders vorteilhaft ist zudem, dass sich das Verbindungselement auch bis zur ersten Master-Vorrichtung erstreckt, die mindestens einer der Programmierschnittstellen zugeordnet ist.
-
So kann die Steuerlogik der Programmierschnittstelle dieser ersten Master-Vorrichtung direkt den Inhalt des ersten programmierbaren Registers lesen, um den Wert des dieser Programmierschnittstelle zugeordneten Identifikators zu wissen, damit bestimmt werden kann, ob sie beispielsweise einen isolierten Zustand aufweist oder nicht, um beispielsweise Transaktionen zu verweigern, die von einer Master-Vorrichtung kommen, die keinen Zugriff auf die isolierten Slave-Vorrichtungen haben könnten.
-
Ebenso erkennt die erste Master-Vorrichtung direkt den Identifikatorwert, der ihrer Programmierschnittstelle zugeordnet ist, und kann somit de facto einen Attributwert zuschreiben, der einem solchen Identifikator entspricht.
-
Mit anderen Worten, wenn die Programmierschnittstelle isoliert ist, erbt diese erste Master-Vorrichtung automatisch die Tatsache, dass sie beispielsweise Zugriff auf jede Slave-Vorrichtung hat, unabhängig davon, ob sie isoliert ist oder nicht.
-
Die eine oder mehreren Master-Vorrichtungen, zum Beispiel ein Mikroprozessor, können die Programmierung der programmierbaren Register durchführen. Mit anderen Worten, die eine oder mehreren zweiten Master-Vorrichtungen können den Programmierblock aufnehmen.
-
Die Programmiermittel sind beispielsweise so konfiguriert, dass sie ihre Programmierung während einer Initialisierungsphase des Systems durchführen.
-
Gemäß einer Ausführungsform umfasst die Verbindungsschaltung eine Verbindungsmatrix, die mit dem Satz von Master-Vorrichtungen verbunden ist, und mindestens eine Stufe, die mindestens einen Demultiplexer umfasst, der einen Eingang aufweist, der mit einem Ausgang der Verbindungsmatrix verbunden ist sowie einer Vielzahl von Ausgängen, die mit den Slave-Schnittstellen verbunden sind.
-
Die Filtermittel umfassen dann eine Filterlogik, die sich auf der Stufe befindet, mit dem mindestens einen zweiten programmierbaren Register verbunden ist und konfiguriert ist, um den Attributwert einer Transaktion, die für eine der Slave-Schnittstellen bestimmt ist, mit dem Identifikatorwert dieser Slave-Schnittstelle zu vergleichen.
-
Wie vorstehend angegeben, ist eine erste gewünschte Eigenschaft für eine Slave-Vorrichtung die Tatsache, dass auf sie nur von einer oder mehreren genehmigten Master-Vorrichtungen aus dem Satz von Master-Vorrichtungen zugegriffen werden kann, und eine zweite gewünschte Eigenschaft für diese Slave-Vorrichtung ist die Tatsache, dass auf sie von jeder Master-Vorrichtung aus dem Satz von Master-Vorrichtungen zugegriffen werden kann.
-
Ebenso ist ein erster gewünschter Zustand für eine Master-Vorrichtung des Satzes von Master-Vorrichtungen die Tatsache, dass sie berechtigt ist, auf eine beliebige Slave-Vorrichtung zuzugreifen, und ein zweiter gewünschter Zustand für eine Master-Vorrichtung des Satzes von Master-Vorrichtungen ist die Tatsache, dass sie nicht berechtigt ist, auf eine oder mehrere ausgewählte Slave-Vorrichtungen aus dem Satz von Slave-Vorrichtungen zuzugreifen.
-
Wenn beispielsweise der Identifikator einer Programmierschnittstelle einen ersten Wert entsprechend der ersten Eigenschaft aufweist, weist das Attribut einer Transaktion, die von der ersten Master-Vorrichtung ausgeht, die dieser Programmierschnittstelle zugeordnet ist, einen ersten Attributwert auf, der dem ersten Zustand entspricht.
-
Wenn beispielsweise der Identifikator einer Programmierschnittstelle einen zweiten Wert entsprechend der zweiten Eigenschaft aufweist, weist das Attribut einer Transaktion, die von der ersten Master-Vorrichtung ausgeht, die dieser Programmierschnittstelle zugeordnet ist, einen zweiten Attributwert auf, der dem zweiten Zustand entspricht.
-
So kann beispielsweise eine Transaktion, der ein Attribut mit dem ersten Attributwert zugeordnet ist, für jede Slave-Vorrichtung bestimmt sein, und eine Transaktion, der ein Attribut mit dem zweiten Attributwert zugeordnet ist und die für eine Slave-Vorrichtung bestimmt ist, deren Identifikator den ersten Wert hat, verweigert werden.
-
Weitere Vorteile und Merkmale der Erfindung werden deutlich, wenn man die detaillierte Beschreibung der Ausführungsformen und Implementierungen liest, die in keinster Weise als einschränkend anzusehen sind, und wenn man die begleitenden Zeichnungen durchsieht, in denen:
- [1] schematisch eine erfindungsgemäße Ausführungsform eines System-on-Chip zeigt.
- [2] schematisch einen Teil des System-on-Chip aus 1 zeigt,
- [3] schematisch einen Teil des System-on-Chip aus 1 zeigt,
- [4] schematisch einen Teil des System-on-Chip aus 1 zeigt,
- [5] schematisch eine Ausführungsform der Erfindung zeigt,
- [6] schematisch eine Ausführungsform der Erfindung zeigt,
- [7] schematisch eine Ausführungsform der Erfindung zeigt,
- [8] schematisch eine Ausführungsform der Erfindung zeigt,
- [9] schematisch eine Ausführungsform der Erfindung zeigt und
- [10] eine URL zeigt.
-
Die Referenz SYS in 1 bezeichnet ein System-on-Chip, zum Beispiel einen Mikrocontroller, hier umfassend eine Vielzahl von ersten Master-Vorrichtungen M1, M2, M3 mit jeweils einer Programmierschnittstelle SM1, SM2, SM3. Jede Programmierschnittstelle ist dazu bestimmt, Transaktionen zu empfangen, die für den entsprechenden ersten Master bestimmt sind, zum Beispiel aus Sicht des Programmierers.
-
Das System-on-Chip SYS umfasst auch eine oder mehrere zweite Master-Vorrichtungen, hier eine einzige zweite Master-Vorrichtung M40, ohne Programmierschnittstelle. Diese zweite Master-Vorrichtung ist zum Beispiel ein Mikroprozessor.
-
Das System-on-Chip SYS umfasst auch eine Vielzahl von Slave-Vorrichtungen, die die Programmierschnittstellen beinhalten.
-
Die Slave-Vorrichtungen beinhalten genauer gesagt die Programmierschnittstellen SM1, SM2, SM3 sowie die Slave-Schnittstellen S1, S2, S3 bestimmter Vorrichtungen, wobei sich diese Slave-Schnittstellen von den Programmierschnittstellen unterscheiden.
-
Diese spezifischen Vorrichtungen sind Ressourcen im Allgemeinen, zum Beispiel Speicher.
-
Jede Master-Vorrichtung, ob eine erste Master-Vorrichtung oder eine zweite Master-Vorrichtung, ist so konfiguriert, dass sie Transaktionen an mindestens eine der Slave-Vorrichtungen übertragen kann. In der Praxis überträgt die Master-Vorrichtung eine Transaktion über eine Master-Schnittstelle, die hier aus Gründen der Vereinfachung nicht dargestellt ist.
-
Diese Transaktionen können Lese-, Schreib-, Programmier-Transaktionen, usw. sein.
-
Jeder Transaktion Tri, die von einer Master-Vorrichtung Mi ausgeht, ist ein Attribut ATTi zugeordnet.
-
In dieser exemplarischen Ausführungsform ist dieses Attribut in der Lage zwei Attributwerte anzunehmen, die zwei gewünschten Zuständen für die Master-Vorrichtung entsprechen.
-
Ebenso ist jede Slave-Vorrichtung, ob Programmierschnittstelle oder Slave-Schnittstelle, einem Identifikator zugeordnet, der in der Lage ist, mindestens zwei Werte anzunehmen, die jeweils mindestens zwei gewünschten Eigenschaften für die Slave-Vorrichtung entsprechen.
-
In dieser exemplarischen Ausführungsform ist eine erste gewünschte Eigenschaft für eine Slave-Vorrichtung die Tatsache, dass sie nur von einer oder mehreren genehmigten Master-Vorrichtungen aus dem Satz von Master-Vorrichtungen zugänglich ist.
-
Mit anderen Worten, eine solche Slave-Vorrichtung gilt dann als „isoliert“ und kann nur von einer oder mehreren genehmigten Master-Vorrichtungen erreicht werden. In diesem Fall hat der Identifikator, der dieser Slave-Vorrichtung zugeordnet ist, zum Beispiel den Logikwert 1.
-
Eine zweite gewünschte Eigenschaft für eine Slave-Vorrichtung ist die Tatsache, dass auf sie von jeder Master-Vorrichtung aus dem Satz von Master-Vorrichtungen zugegriffen werden kann.
-
Mit anderen Worten, bei dieser zweiten Eigenschaft ist die Slave-Vorrichtung nicht „isoliert“. Ihr Bezeichner zum Beispiel hat dann den logischen Wert „0“.
-
In Bezug auf eine Master-Vorrichtung kann ein erster gewünschter Zustand für diese Master-Vorrichtung die Tatsache sein, dass sie berechtigt ist, auf jede Slave-Vorrichtung zuzugreifen, d.h. auf eine isolierte oder nicht-isolierte Slave-Vorrichtung (Programmierschnittstelle oder Ressource).
-
In diesem Fall kann das Attribut der von dieser Master-Vorrichtung ausgehenden Transaktionen beispielsweise den logischen Wert „1“ annehmen.
-
Ein zweiter gewünschter Zustand für eine Master-Vorrichtung kann die Tatsache sein, dass sie nicht berechtigt ist, auf eine oder mehrere ausgewählte Slave-Vorrichtungen aus dem Satz der Slave-Vorrichtungen zuzugreifen.
-
Mit anderen Worten, diese Master-Vorrichtung ist beispielsweise nicht berechtigt, auf die „isolierten“ Slave-Vorrichtungen zuzugreifen. In diesem Fall nimmt das Attribut, das den Transaktionen zugeordnet ist, die von einer solchen Master-Vorrichtung in diesem zweiten Zustand ausgehen, beispielsweise den logischen Wert „0“ an.
-
Darüber hinaus wird der Zustand jeder ersten Master-Vorrichtung automatisch von der Eigenschaft ihrer Programmierschnittstelle übernommen.
-
Mit anderen Worten, in diesem Beispiel, wenn die Programmierschnittstelle einer ersten Master-Vorrichtung die Eigenschaft „isoliert“ hat, befindet sich die erste Master-Vorrichtung in ihrem ersten Zustand und genehmigt den Zugriff auf jede Slave-Vorrichtung, unabhängig davon, ob diese Slave-Vorrichtung isoliert ist oder nicht.
-
Wenn die Programmierschnittstelle dieser ersten Master-Vorrichtung die Eigenschaft „nicht-isoliert“ aufweist, befindet sich diese erste Master-Vorrichtung dann automatisch in ihrem zweiten Zustand, in dem sie nicht berechtigt ist, auf die isolierten Slave-Vorrichtungen (Programmierschnittstelle oder Slave-Schnittstelle) zuzugreifen.
-
Die erste Master-Vorrichtung wird dann so konfiguriert, dass sie abhängig vom Identifikatorwert seiner Programmierschnittstelle einen der Attributwerte dem Attribut dieser Transaktionen zuweist.
-
Bei einer zweiten Master-Vorrichtung ist der Attributwert dieser Transaktionen fest vorgegeben, zum Beispiel hartkodiert, abhängig vom Zustand, den der Benutzer dieser zweiten Master-Vorrichtung geben möchte.
-
Somit befindet sich in diesem Beispiel die zweite Master-Vorrichtung M40 im ersten Zustand, in dem sie berechtigt ist, auf jede Slave-Vorrichtung zuzugreifen, unabhängig davon, ob diese Slave-Vorrichtung isoliert ist oder nicht.
-
Im Falle, dass das System eine weitere zweite Master-Vorrichtung umfasst, dies könnte beispielsweise im zweiten Zustand sein, in dem sie nicht berechtigt ist, auf die isolierten Slave-Vorrichtungen zuzugreifen.
-
Darüber hinaus sind, wie im Folgenden näher beschrieben, in diesem Beispiel die Werte bestimmter Identifikatoren im System hartkodiert, während andere programmierbar sind, zum Beispiel abhängig von der Anwendung, für die das System-on-Chip bestimmt ist, und/oder abhängig von der Art der verschiedenen Ressourcen.
-
Das System-on-Chip umfasst auch Filtermittel, die in Gegenwart einer für eine Slave-Vorrichtung bestimmte Transaktion so konfiguriert sind, dass sie den entsprechenden Attributwert mit dem Identifikatorwert dieser Slave-Vorrichtung vergleichen und die Transaktion abhängig vom Ergebnis des Vergleichs verweigern oder nicht.
-
Wie im Folgenden näher beschrieben, umfassen diese Filtermittel unterschiedliche Filterlogiken.
-
Das System-on-Chip SYS umfasst auch eine Verbindungsschaltung 1, die zwischen den Master-Vorrichtungen Mi und den Slave-Vorrichtungen SMi, Si gekoppelt ist.
-
Die Verbindungsschaltung 1 umfasst eine Verbindungsmatrix 10, die eine Vielzahl von Eingängen EM1, EM2, EM3, EM40 aufweist, die über die Busse BSS1, BSS2, BSS3 und BSS40 mit den Master-Vorrichtungen M1, M2, M3, M40 verbunden sind, sowie eine Vielzahl von Ausgängen.
-
Ein erster Ausgang BS1 ist über einen Bus BSS7 mit dem Eingang E100 einer ersten Demultiplexstufe verbunden, wobei in diesem Fall drei Ausgänge 100 S100A, S100B, S100C jeweils mit den drei Slave-Schnittstellen S1, S2 und S3 verbunden sind.
-
Ein weiterer Ausgang BS3 ist an einer weiteren Demultiplexstufe 101 mit in diesem Fall drei Ausgängen vorgesehen, die über drei Busse BSS4, BSS5 und BSS6 mit den drei Programmierschnittstellen SM1, SM2, SM3 verbunden sind.
-
Ein Bus BSS8 verbindet den Ausgang BS3 der Verbindungsmatrix mit der Demultiplexstufe 101.
-
Schließlich wird in diesem Beispiel ein weiterer Ausgang BS2 der Verbindungsmatrix über einen Bus BSS9 mit einer Reihe Register RGPS1, RGPS3, RGPSM1 verbunden.
-
Wie im Folgenden näher beschrieben, ist dieser Ausgang BS2 nur für Transaktionen zugänglich, die von der zweiten Master-Vorrichtung M40 ausgehen.
-
Die Struktur einer solchen Verbindungsmatrix, die im Allgemeinen eine mehrschichtige Verbindungsmatrix ist, sowie das Protokoll, das den Austausch und die Weiterleitung von Transaktionen innerhalb der Verbindungsmatrix ermöglicht, sind einem Fachmann gut bekannt.
-
In diesem Zusammenhang kann insbesondere auf den Artikel von Venkateswara Rao et al mit dem Titel „A Frame work on AMBA bus based Communication Architecture to improve the Real Time Computing Performance in MPSoC“, aus der Fachzeitschrift „International Journal of Computer Applications“ (0975-8887), Ausgabe 91 - N° 5, April 2014, oder auf eine allgemeine Präsentation dieser Verbindungsmatrizen im Jahr 2015 durch A. Gerstlauer verwiesen werden, die auf der in 10 genannten Webseite verfügbar ist.
-
Darüber hinaus kann als nicht einschränkendes Beispiel die von der Firma ARM unter der Referenz NIC-400 (Version R0p3) verkaufte Verbindungsmatrix verwendet werden.
-
Die verschiedenen Busse können ihrerseits von beliebiger konventioneller Struktur sein, und zum Beispiel AHB-Busse mit einem Protokoll sein, das beispielsweise im Dokument AMBA 3 AHB-Lite Protocol V1.0 Spezifikation der Firma ARM (2001, 2006) beschrieben ist.
-
Das Register RGPS1 soll den Identifikatorwert der Slave-Schnittstelle S1 enthalten.
-
Das Register RGPS3 soll den Identifikator der Slave-Schnittstelle S3 enthalten, während das Register RGPSM1 den Identifikator der Programmierschnittstelle SM1 enthalten soll.
-
Diese Werte sind hier über den Bus BSS9 mit Hilfe von Programmiermitteln programmierbar, die einen Programmierblock MCPM, der hier in der zweiten Master-Vorrichtung M40 (Prozessor) integriert ist, und die Anordnung der Register RGPS1, RGPS3, RGPSM1 umfassen.
-
Dieser Programmierblock MCPM ist in diesem Fall ein Initialisierungsprogrammcode, der während einer Initialisierungsphase ausgeführt werden soll, insbesondere um den Inhalt der Registeranordnung RGPS1, RGPS3, RGPSM1 zu programmieren.
-
Aus diesem Grund ist der Ausgang BS2 der Verbindungsmatrix 10 nur von der zweiten Master-Vorrichtung M40 zugänglich, um die Programmierungstransaktionen zu empfangen.
-
Darüber hinaus verbindet ein Anschluss CX, zum Beispiel ein Drahtleiter, das Register RGPSM1 mit der Programmierschnittstelle SM1.
-
In diesem Beispiel wird auch angenommen, dass die Werte der Identifikatoren der Slave-Schnittstelle S2 sowie der Programmierschnittstellen SM2 und SM3 in den Registern fest und hartkodiert sind.
-
Nun wird insbesondere auf die 2 bis 4 verwiesen, um den internen Aufbau der Programmierschnittstelle SM1, der ersten Master-Vorrichtung M1 sowie die Demultiplexstufen 100 und 101 näher, aber dennoch schematisch, zu veranschaulichen.
-
Die Schnittstelle SM1 umfasst eine mit dem Anschluss CX gekoppelte Filterlogik LGS1.
-
Die Filterlogik LGS1 ist so konfiguriert, dass sie den Vergleich zwischen dem Identifikatorwert der Schnittstelle SM1, der im Register RGPSM1 über die Verbindung CX gelesen wird, und dem Attribut einer auf dem Bus BSS4 ankommenden Transaktion durchführen kann. Abhängig von diesem Vergleich wird die Transaktion verweigert oder genehmigt.
-
Der Anschluss CX erstreckt sich bis zur ersten Master-Vorrichtung M1 und genauer gesagt bis zu einer Logik LGM1. Diese Logik LGM1 ist so konfiguriert, dass sie den Wert des Attributs ATT1 bestimmen kann, welcher jeder Transaktion TR1 zugeordnet ist, die abhängig vom Identifikatorwert der Programmierschnittstelle SM1 von der ersten Master-Vorrichtung M1 geliefert wird,
-
Somit wird der Zustand der ersten Master-Vorrichtung automatisch aus der Eigenschaft ihrer Programmierschnittstelle geerbt.
-
Genauer gesagt, wenn beispielsweise die Programmierschnittstelle eine Schnittstelle ist, die als „isoliert“ gilt, ist die erste Master-Vorrichtung dann eine Vorrichtung, die berechtigt ist, auf jede Slave-Vorrichtung zuzugreifen, unabhängig davon, ob diese Slave-Vorrichtung isoliert ist oder nicht.
-
Wenn im Gegensatz dazu die Schnittstelle SM1 eine nicht isolierte Schnittstelle ist, befindet sich die erste Master-Vorrichtung M1 automatisch in einem Zustand, der es ihr nicht erlaubt, auf isolierte Slave-Vorrichtungen zuzugreifen.
-
Der Demultiplexzustand 100 umfasst auch eine Filterlogik LGCD, die mit einem Register RGD2 gekoppelt ist und in diesem Beispiel den Identifikator der Slave-Schnittstelle S2 speichert.
-
Wie bereits erwähnt, ist dieses Register RGDS1 nicht programmierbar.
-
Die Filterlogik LGCD ist so konfiguriert, dass sie das Attribut einer für die Slave-Schnittstelle S2 vorgesehenen Transaktion mit dem im Register RGDS2 gespeicherten Identifikator dieser Slave-Schnittstelle S2 vergleichen kann.
-
Die Demultiplexstufe 100 umfasst eine weitere Filterlogik LGCM, die mit den Registern RGPS1 und RGPS3 gekoppelt ist.
-
Diese Filterlogik LGCM soll den Attributwert einer für die Slave-Schnittstelle S1 vorgesehenen Transaktion mit dem Wert des im Register RGPS1 enthaltenen Identifikators vergleichen.
-
Ebenso vergleicht die Filterlogik LGCM bei Vorhandensein einer für die Slave-Schnittstelle S3 vorgesehenen Transaktion das Attribut dieser Transaktion mit dem Wert des im Register RGPS3 enthaltenen Identifikators.
-
Die eine oder mehreren Transaktionen werden in Abhängigkeit vom Ergebnis dieser Vergleiche verweigert.
-
In dieser exemplarischen Ausführungsform umfasst die Demultiplexstufe 101 die beiden Register RGDSM2 und RGDSM3, die die Festwerte der Identifikatoren der Programmierschnittstellen SM2 und SM3 sowie die zugehörigen Filterlogiken LGS2 und LGS3 speichern.
-
Ähnlich wie bei dem vorstehend beschriebenen Verfahren vergleicht die Filterlogik LGS2 das Attribut einer für die Programmierschnittstelle SM2 vorgesehenen Transaktion mit dem Wert des im Register RGDSM2 enthaltenen Identifikators, um diese Transaktion entweder zu verweigern oder nicht.
-
Die Filterlogik LGS3 ihrerseits vergleicht das Attribut einer für die Programmierschnittstelle SME vorgesehenen Transaktion mit dem Wert des Identifikationsbehälters im Register RGDSM3, um zu entscheiden, ob diese Transaktion verweigert werden soll.
-
Die Filtermittel beinhalten die verschiedenen Filterlogiken LGS1, LGCD, LGCM, LGS2 und LGS3.
-
Es wird nun insbesondere auf die 5 bis 9 verwiesen, um eine exemplarische Ausführungsform eines Verfahrens zur Verwaltung des Zugriffs von Transaktionen auf verschiedene Slave-Vorrichtungen schematisch zu veranschaulichen.
-
Wie zuvor angedeutet und in 5 dargestellt, werden in diesem Beispiel die Identifikatoren IDS2, IDSM2 und IDSM3, die den Slave-Vorrichtungen S2, SM2 und SM3 zugeordnet sind, bei der Realisierung des System-on-Chip während eines Hartkodierschrittes 50 fixiert und in den Registern RGDS2, RGDSM2 und RGDSM3 gespeichert.
-
Im betrachteten Beispiel gelten die Slave-Vorrichtungen S2 und SM2 als „nicht isoliert“ und weisen daher einen Identifikator gleich „0“ auf.
-
Die erste Master-Vorrichtung M3 gilt als in der Lage, auf jede Slave-Vorrichtung zuzugreifen, unabhängig davon, ob diese isoliert ist oder nicht.
-
Folglich ist der Identifikator der Programmierschnittstelle SM3 gleich 1.
-
Da die erste Master-Vorrichtung M3 darüber hinaus Zugriff auf eine beliebige Slave-Vorrichtung haben kann, ist die in dieser Vorrichtung M3 integrierte Logik so konfiguriert und hartkodiert, dass sie dem Attribut ATT3, das den Transaktionen zugeordnet ist, die von dieser ersten Master-Vorrichtung M3 ausgehen, den Wert 1 zuweist.
-
Die zweite Master-Vorrichtung M40 hat auch Zugriff auf jeden Slave, ob isoliert oder nicht isoliert. Das Attribut ATT40, das den Transaktionen zugeordnet ist, die von dieser zweiten Master-Vorrichtung M40 ausgehen, hat den hart kodierten Wert 1.
-
Die Werte der Identifikatoren IDS1, IDS3 und IDSM1, die der Slave-Vorrichtung S1, S3 und SM1 zugeordnet sind, sind programmierbar.
-
Diese Programmierung wird vorteilhaft in der Initialisierungsphase 60 während der Ausführung des Initialisierungsprogramms durchgeführt. Diese Programmierung erfolgt durch Ausführen des Initialisierungscodes (Programmierblock) MCPM, der in der zweiten Master-Vorrichtung M40 enthalten ist.
-
In diesem Beispiel wird davon ausgegangen, dass die Slave-Schnittstelle S1 als nicht-isoliert ausgewählt ist, während die Slave-Schnittstelle S3 als isoliert ausgewählt ist.
-
Darüber hinaus ist die der ersten Master-Vorrichtung M1 zugeordnete Programmierschnittstelle SM1 ebenfalls als zu isolierend ausgewählt, und die erste Master-Vorrichtung kann somit Zugriff auf jede Slave-Vorrichtung haben, unabhängig davon, ob sie isoliert ist oder nicht.
-
Unter diesen Bedingungen weist der Programmierblock MCPM den Identifikatoren IDS3 und IDSM 1 den Wert 1 zu, der in den Registern RGPS3 und RGPSM1 gespeichert wird.
-
Der Programmierblock weist dem Identifikator IDS1 den Wert „0“ zu, der im Register RGPS1 gespeichert wird.
-
Schließlich wird die in der ersten Master-Vorrichtung M1 vorhandene Logik LGM1 so konfiguriert, dass sie dem Attribut ATT1, der jeder Transaktion TR1 zugeordnet ist, die von dieser Master-Vorrichtung M1 ausgeht, den Wert 1 zuweist.
-
Im Allgemeinen führen die verschiedenen Filterlogiken, wie in 7 dargestellt, in Gegenwart einer Transaktion TR1 und ihres Attributs ATTi einen Vergleich 70 zwischen dem Attributwert ATTi und dem Identifikatorwert IDSi der Slave-Schnittstelle durch, für die diese Transaktion vorgesehen ist.
-
Abhängig vom Ergebnis des Vergleichs wird der Zugriff auf die Slave-Schnittstelle Si genehmigt (Schritt 71) oder verweigert (Schritt 72).
-
Genauer gesagt wird in dieser Ausführungsform, wie in 8 dargestellt, eine Transaktion Tri, die einem Attribut ATTi gleich 1 zugeordnet ist, an jede Slave-Vorrichtung SMj oder Sj geliefert (Schritt 80).
-
Im Gegensatz dazu wird, wie in 9 dargestellt, eine Transaktion TRi, der ein Attribut ATTi gleich 0 zugewiesen wurde und für eine Slave-Vorrichtung SMj oder Sj vorgesehen ist, nur in Abhängigkeit vom Ergebnis des Vergleichs zwischen diesem Attribut ATTi und dem Identifikator IDSMj oder IDSj der betreffenden Slave-Vorrichtung geliefert.
-
Genauer gesagt wird in Schritt 90 überprüft, ob der Identifikator IDSMj oder IDSj den Wert 1 hat.
-
Ist dies der Fall, wird die Transaktion Tri abgelehnt (Schritt 92), da diese Transaktion in diesem Fall für eine isolierte Slave-Vorrichtung bestimmt ist und von einer Master-Vorrichtung stammt, die nicht berechtigt ist, auf isolierte Slave-Vorrichtungen zuzugreifen.
-
Ist dagegen der Identifikator IDSMj oder IDSj gleich 0, wird der Zugriff der Transaktion genehmigt (Schritt 91).
-
Die Erfindung ist nicht auf die hier beschriebenen Ausführungsformen beschränkt, sondern umfasst auch alle Varianten davon.
-
So wird es möglich sein, die Anzahl der programmierbaren Register zu erhöhen, zum Beispiel um die Werte aller Identifikatoren aller Slave-Vorrichtungen programmierbar zu machen, natürlich vorbehaltlich einer Erhöhung der Anzahl der „Draht“-Verbindungen CX.
-
Darüber hinaus ist es im Hinblick auf die programmierbaren Werte der einen oder mehreren Programmierschnittstellen SMi denkbar, die Drahtverbindung CX durch eine Steuerung über die Demultiplexstufe 101 und ungenutzte und verfügbare Signale der Busse BSS8 und BSS4-BSS6 zu ersetzen.