Deutsch   English   Français   Italiano  
<f2cb846242dbfcef1efa59b92763a965@www.novabbs.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder9.news.weretis.net!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail
From: mitchalsup@aol.com (MitchAlsup1)
Newsgroups: comp.arch
Subject: Re: MSI interrupts
Date: Sat, 15 Mar 2025 17:46:37 +0000
Organization: Rocksolid Light
Message-ID: <f2cb846242dbfcef1efa59b92763a965@www.novabbs.org>
References: <vqto79$335c6$1@dont-email.me> <YyFAP.729659$eNx6.235106@fx14.iad> <6731f278e3a9eb70d34250f43b7f15f2@www.novabbs.org> <AUHAP.61125$Xq5f.14972@fx38.iad> <748c0cc0ba18704b4678fd553193573e@www.novabbs.org> <2YJAP.403746$zz8b.238811@fx09.iad> <53b8227eba214e0340cad309241af7b5@www.novabbs.org> <3pXAP.584096$FVcd.26370@fx10.iad> <795b541375e3e0f53e2c76a55ffe3f20@www.novabbs.org> <vNZAP.37553$D_V4.18229@fx39.iad> <aceeec2839b8824d52f0cbe709af51e1@www.novabbs.org> <eM_AP.81303$8rz3.7843@fx37.iad> <vr2nj9$2goqe$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: i2pn2.org;
	logging-data="323896"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="o5SwNDfMfYu6Mv4wwLiW6e/jbA93UAdzFodw5PEa6eU";
User-Agent: Rocksolid Light
X-Rslight-Posting-User: cb29269328a20fe5719ed6a1c397e21f651bda71
X-Spam-Checker-Version: SpamAssassin 4.0.0
X-Rslight-Site: $2y$10$W4rZ3F2lGbxzgSLcDCqQFec8kuj6p5qo/KK2OOJBdRKVsxkmuqjQC
Bytes: 4255
Lines: 54

On Sat, 15 Mar 2025 2:10:48 +0000, Robert Finch wrote:

> Okay, all of this MSI-X stuff is starting to percolate into my brain.
> Coming up with a lighter-weight version of MSI-X for Q+. MSI-X has more
> capacity than is needed for the Q+ SoC. I desire something in between
> the simple and the complex. Interrupts are complex in multi-master
> systems.

Interrupts should utilize a message pathway already used by other
"system things". This eliminates any cost "ON" the interrupts
themselves.

Secondly, you want to be in a position where is someone chooses Q+
as their main CPUs, that they are not hindered in building large
systems using it.

> Q+ SoC has just 32-bits for the IRQ message payload data as many devices
> are 32-bit and IRQ messages are passed on the 32-bit response bus. That
> means a full I/O address cannot be used as it would be too large. As the
> message data, the I/O device supplies the vector number (12-bits) and
> interrupt controller number (6 bits). Specific interrupt controllers are
> targeted rather than an I/O address as targeting requires only six bits
> rather than a 32+ bit I/O address. Currently there will be only one
> interrupt controller in the system. Interrupt controllers could be
> designed to do other things like log to memory.

Under advice of council (EricP), I punted HW vectoring--which removed
a couple of pointers from the device:function control block along with
restrictions on where said table is, and on what alignment it is.

> Each interrupt controller has a base addresses and length for the vector
> tables so they may be located in system RAM (DRAM). The interrupt
> controller takes care of fetching the vector and broadcasting the vector
> to a specific CPU core.

There are situations where you want any 1 from a set of cores to "take"
the interrupt, rather than targeting one core (which may be busy at the
time.

>                         The target CPU core is programmable in the
> vector table. The vector contains 128-bits of information (almost same
> format as MSI-X) and identifies the ISR address and processing core.
> 32-bits of data may also be supplied in the vector table entry.
>
> To simplify things, the current interrupt controller contains the vector
> table in BRAM in a compressed format which supports 512 vectors for each
> operating mode. (2048 vectors total). The vector table is mapped into
> the MMI/O space. The interrupt controller reads from its internal vector
> table and directly supplies the CPU with the vector on a dedicated bus.

Those kinds of details have been punted to SW.

> I had the thought of supplying an instruction to the CPU rather than an
> address, ala 8080. Normally this would be a JMP instruction to the ISR.
> Other instructions may be useful like task-switch or interrupt return.