Deutsch English Français Italiano |
<vumpcl$2a0rl$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Robert Finch <robfi680@gmail.com> Newsgroups: comp.arch Subject: Re: fractional PCs Date: Sun, 27 Apr 2025 22:32:52 -0400 Organization: A noiseless patient Spider Lines: 55 Message-ID: <vumpcl$2a0rl$1@dont-email.me> References: <vbgdms$152jq$1@dont-email.me> <vtsbga$1tu26$1@dont-email.me> <b8859e8d6b909a4505c0f487a6a0fe35@www.novabbs.org> <vu2542$38qev$1@dont-email.me> <vu46su$1170i$1@dont-email.me> <2025Apr21.080532@mips.complang.tuwien.ac.at> <d47cdad26528b4d2309ac9df60120315@www.novabbs.org> <2025Apr22.071010@mips.complang.tuwien.ac.at> <DwONP.2213540$eNx6.1757109@fx14.iad> <2025Apr22.193103@mips.complang.tuwien.ac.at> <f5e5bf81ac2c7e2066d2a181c5a70baf@www.novabbs.org> <2025Apr23.194456@mips.complang.tuwien.ac.at> <126700f99b6f97d7483bb5355d68c361@www.novabbs.org> <vucbbe$mvlc$1@dont-email.me> <vul4r4$n19o$1@dont-email.me> <0b410ad93124778a2b1b3ab8fb6ec62c@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Mon, 28 Apr 2025 04:32:54 +0200 (CEST) Injection-Info: dont-email.me; posting-host="18c8ae079e36c536b22a89c21e89b1d8"; logging-data="2425717"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+clJSJST7Ukzz40g0lDWvcaUznCmGLhow=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:eWM6fmOIxjQedjST9qGx4e6LAPc= Content-Language: en-US In-Reply-To: <0b410ad93124778a2b1b3ab8fb6ec62c@www.novabbs.org> Bytes: 4197 On 2025-04-27 4:53 p.m., MitchAlsup1 wrote: > On Sun, 27 Apr 2025 11:36:05 +0000, Robert Finch wrote: > >> Representing the PC as a fixed-point number because it records which >> micro-op of the micro-op stream for an instruction got interrupted. It >> was easier to restart the micro-op stream than to defer interrupts to >> the next instruction. > > Why not just backup to the instruction boundary ?? I think I was worried about an instruction disabling interrupts or causing an exception that should be processed before the interrupt occurred. (keeping the interrupt precise). I did not want to need to consider other exceptions that might have occurred before the interrupt. Searching for an instruction boundary in either direction is I think more logic than just recording the micro-op number. It is more FFs to record the number, but fewer LUTs. There is like 8 x10 bit comparators plus muxes on the re-order buffer to backup to the instruction boundary and mark an interrupts. Just recording the micro-op number is just stuffing 3 bits into the PC, plus three bits propagated down the pipeline (FFs). The PC has two zero bits available already. > >> The lead micro-ops on a interrupt return are just NOP'd out. ATM there >> is no micro-op state that needs to be saved and restored through context >> switches, other than the index into the stream which can be saved as >> part of the PC. > > Also note: this is "completion" interrupt model used in 010, 020, 030 > {Not sure about 040}. > > It caused: > a) a bunch of bugs > b) a lot of strange stack state > c) which could be attacked by any thread with privilege. > > Although it "sounds" like it saves {time, energy, forward progress} > the state saving/restoring on the stack pretty much consumes all of > that. a) is a bit worrisome. Doing something out of the ordinary is always asking for bugs. I am guessing programmers tried to manipulate the stack state on the 68k series. I replicated the 010 as an FPGA core and IIRC I stuff the machine state number onto the stack. Which is bound to be a different number than the 010. b) There is no state that needs to be stacked outside of what is normally stacked for an interrupt. For c) the usual interrupt as well could be attacked by a thread with privilege. I have coded it both ways, so I may make it a core option. Right up there with page relative branching. There is already a flag to generate the core for performance instead of size.