Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <132536f47d1b160ad3ad0340fc479c1d@www.novabbs.org>
Deutsch   English   Français   Italiano  
<132536f47d1b160ad3ad0340fc479c1d@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: Concertlina II: Full Circle
Date: Mon, 17 Jun 2024 20:20:03 +0000
Organization: Rocksolid Light
Message-ID: <132536f47d1b160ad3ad0340fc479c1d@www.novabbs.org>
References: <mas07jhu9i876gsov2gh8tap17kem5n21p@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: i2pn2.org;
	logging-data="318698"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="65wTazMNTleAJDh/pRqmKE7ADni/0wesT78+pyiDW8A";
User-Agent: Rocksolid Light
X-Spam-Checker-Version: SpamAssassin 4.0.0
X-Rslight-Site: $2y$10$VmSTGhwRKq5tKueLlUmbTey/tP3zC0f1QPMgnZcWJdw0FTmDEUzF.
X-Rslight-Posting-User: ac58ceb75ea22753186dae54d967fed894c3dce8
Bytes: 3648
Lines: 63

John Savard wrote:

> I've noted earlier that I felt I had been going around in circles with
> Concertina II, changing the instruction format back and forth, instead
> of making progress to flesh it out.

At least no one can say you give up easily.

> Recently, I added a new instruction to facilitate looping.
> But the trouble was that it took up tooo much opcode space.

Yes, indeed...

> One thing that occured to me was that if I went back to an old method
> of specifying instructions longer than 32-bits: using a 4-bit pSupp
> field to point into the same reserved area in the block as used for
> pseudo-immediates, that would suit this instruction very well.

> The reason is that if that techique were used, then I could use the
> header that's also an instruction to just squeeze in the three-bit
> decode field, and so access to the Loop instruction would be easy as
> befits its importance.

> Then I went back, and looked up an older version of Concertina II
> which had it. It had complicated block headers. But worse than that,
> it had _four_ different versions of the complete instruction set!
> Which version was used depended on the header.The idea, of course,
> that some headers required a pared-down version of the instruction set
> so as to squeeze in more stuff.
> It was also interesting to see how much further along I had gotten in
> fleshing out that older version of the instruction set.

As to looping, I faced the same delimma and came to a different
conclusion::
You don't do it in 1 instruction, instead, you do it in a way where
your
2 instruction encoding executes one of the instructions only once. I
call
this bookending the loop.

So, I have an instruction called VEC, which donates a register and 
provides other guidance to the loop. And I have an instruction called
LOOP which performs the bottom of loop calculations. The register
donated
by VEC is given the address of the top of the loop so that the loop
terminating instruction is relieved of needing to supply it in the 
form of a displacement,...

VEC is executed once at the top of the loop, and provides guidance as
to which registers from within the loop are live-out of the loop.
This allows HW to avoid writing everything into RF and facilitates
running the loop across multiple lanes of function units.

LOOP, then, performs the ADD, a CMP, and a BC to the top of the loop.

I ended up with 3 kinds of LOOPs:
a) counted    -- for( i = 0; i < max;         i++ )
b) searching  -- for( i = 0; a[i] > 13;       i++ )
c) both       -- for( i = 0; i < max && a[i]; i++ )

This coves the majority of loops where the looping condition is
encodable.

> John Savard