Back to Qemu

Hexagon System Architecture

docs/devel/hexagon-sys.rst

11.1.03.6 KB
Original Source

.. SPDX-License-Identifier: GPL-2.0-or-later

.. _Hexagon-System-arch:

Hexagon System Architecture

The hexagon architecture has some unique elements which are described here.

Interrupts

When interrupts arrive at a Hexagon DSP core, they are priority-steered to be handled by an eligible hardware thread with the lowest priority.

Memory

Each hardware thread has an SSR.ASID field that contains its Address Space Identifier. This value is catenated with a 32-bit virtual address - the MMU can then resolve this extended virtual address to a physical address.

TLBs

The format of a TLB entry is shown below.

.. note:: The Small Core DSPs have a different TLB format which is not yet supported.

.. admonition:: Diagram

.. code:: text

         6                   5                   4               3
   3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |v|g|x|A|A|             |                                       |
  |a|l|P|1|0|     ASID    |             Virtual Page              |
  |l|b| | | |             |                                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     3                   2                   1                   0
   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | | | | |       |                                             | |
  |x|w|r|u|Cacheab|               Physical Page                 |S|
  | | | | |       |                                             | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • ASID: the address-space identifier
  • A1, A0: the behavior of these cache line attributes are not modeled by QEMU.
  • xP: the extra-physical bit is the most significant physical address bit.
  • S: the S bit and the LSBs of the physical page indicate the page size
  • val: this is the 'valid' bit, when set it indicates that page matching should consider this entry.

.. list-table:: Page sizes :widths: 25 25 50 :header-rows: 1

    • S-bit
    • Phys page LSBs
    • Page size
    • 1
    • N/A
    • 4kb
    • 0
    • 0b1
    • 16kb
    • 0
    • 0b10
    • 64kb
    • 0
    • 0b100
    • 256kb
    • 0
    • 0b1000
    • 1MB
    • 0
    • 0b10000
    • 4MB
    • 0
    • 0b100000
    • 16MB
  • glb: if the global bit is set, the ASID is not considered when matching TLBs.

  • Cacheab: the cacheability attributes of TLBs are not modeled, these bits are ignored.

  • RWX: read-, write-, execute-, enable bits. Indicates if user programs are permitted to read/write/execute the given page.

  • U: indicates if user programs can access this page.

Scheduler

The Hexagon system architecture has a feature to assist the guest OS task scheduler. The guest OS can enable this feature by setting SCHEDCFG.EN. The BESTWAIT register is programmed by the guest OS to indicate the priority of the highest priority task waiting to run on a hardware thread. The reschedule interrupt is triggered when any hardware thread's priority in STID.PRIO is worse than the BESTWAIT. When it is triggered, the BESTWAIT.PRIO value is reset to 0x1ff.

HVX Coprocessor

The Supervisor Status Register field SSR.XA binds a DSP hardware thread to one of the eight possible HVX contexts. The guest OS is responsible for managing this resource.

.. seealso::

``target/hexagon/README`` in the QEMU source tree for more info about Hexagon.