Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Is your job running? You'd better go catch it!


devel / comp.arch / Re: Could we build a better 6502?

SubjectAuthor
* Could we build a better 6502?Thomas Koenig
+* Re: Could we build a better 6502?Quadibloc
|+* Re: Could we build a better 6502?John Levine
||+* Re: Could we build a better 6502?MitchAlsup
|||`* Re: Could we build a better 6502?aph
||| `* Re: Could we build a better 6502?Anton Ertl
|||  `* Re: Could we build a better 6502?MitchAlsup
|||   +- Re: Could we build a better 6502?Thomas Koenig
|||   +- Re: Could we build a better 6502?Anton Ertl
|||   `* Re: Could we build a better 6502?Quadibloc
|||    `* Re: Could we build a better 6502?Thomas Koenig
|||     +* Re: Could we build a better 6502?Brian G. Lucas
|||     |`* Re: Could we build a better 6502?Quadibloc
|||     | +- Re: Could we build a better 6502?Brian G. Lucas
|||     | `- Re: Could we build a better 6502?Anton Ertl
|||     +* Re: Could we build a better 6502?Stephen Fuld
|||     |+- Re: Could we build a better 6502?Terje Mathisen
|||     |`* Re: Could we build a better 6502?pec...@gmail.com
|||     | +* Re: Could we build a better 6502?MitchAlsup
|||     | |+* Re: Could we build a better 6502?pec...@gmail.com
|||     | ||`* Re: Could we build a better 6502?Stephen Fuld
|||     | || `- Re: Could we build a better 6502?pec...@gmail.com
|||     | |`* Re: Could we build a better 6502?Timothy McCaffrey
|||     | | +- Re: Could we build a better 6502?Michael Barry
|||     | | `* Re: Could we build a better 6502?Thomas Koenig
|||     | |  `* Re: Could we build a better 6502?Timothy McCaffrey
|||     | |   +* Re: Could we build a better 6502?pec...@gmail.com
|||     | |   |`* Re: Could we build a better 6502?Michael Barry
|||     | |   | `- Re: Could we build a better 6502?Thomas Koenig
|||     | |   `* Re: Could we build a better 6502?chris
|||     | |    `* Re: Could we build a better 6502?pec...@gmail.com
|||     | |     +* Re: Could we build a better 6502?MitchAlsup
|||     | |     |`- Re: Could we build a better 6502?Thomas Koenig
|||     | |     `* Re: Could we build a better 6502?chris
|||     | |      `* Re: Could we build a better 6502?George Neuner
|||     | |       `* Re: Could we build a better 6502?chris
|||     | |        +* Re: Could we build a better 6502?MitchAlsup
|||     | |        |`* Re: Could we build a better 6502?Thomas Koenig
|||     | |        | +- Re: Could we build a better 6502?Bernd Linsel
|||     | |        | `* Re: Could we build a better 6502?David Brown
|||     | |        |  `* Re: Could we build a better 6502?chris
|||     | |        |   `* Re: Could we build a better 6502?David Brown
|||     | |        |    `* Re: Could we build a better 6502?Terje Mathisen
|||     | |        |     `* Re: Could we build a better 6502?Thomas Koenig
|||     | |        |      `- Re: Could we build a better 6502?Terje Mathisen
|||     | |        `* Re: Could we build a better 6502?Al Grant
|||     | |         `- Re: Could we build a better 6502?chris
|||     | `* Re: Could we build a better 6502?Thomas Koenig
|||     |  +- Re: Could we build a better 6502?MitchAlsup
|||     |  +- Re: Could we build a better 6502?pec...@gmail.com
|||     |  +* Re: Could we build a better 6502?Thomas Koenig
|||     |  |+* Re: Could we build a better 6502?Stefan Monnier
|||     |  ||`* Re: Could we build a better 6502?Ivan Godard
|||     |  || `* Re: Could we build a better 6502?Stefan Monnier
|||     |  ||  `* Re: Could we build a better 6502?John Dallman
|||     |  ||   +- Re: Could we build a better 6502?Stefan Monnier
|||     |  ||   +* Re: Could we build a better 6502?pec...@gmail.com
|||     |  ||   |`- Re: Could we build a better 6502?Ivan Godard
|||     |  ||   `- Re: Could we build a better 6502?Stephen Fuld
|||     |  |`* Re: Could we build a better 6502?pec...@gmail.com
|||     |  | `* Re: Could we build a better 6502?Thomas Koenig
|||     |  |  `- Re: Could we build a better 6502?pec...@gmail.com
|||     |  `* Re: Could we build a better 6502?Thomas Koenig
|||     |   +* Re: Could we build a better 6502?Anton Ertl
|||     |   |+* Re: Could we build a better 6502?Thomas Koenig
|||     |   ||`* Re: Could we build a better 6502?pec...@gmail.com
|||     |   || `- Re: Could we build a better 6502?MitchAlsup
|||     |   |`* Re: Could we build a better 6502?David Schultz
|||     |   | +* Re: Could we build a better 6502?Anton Ertl
|||     |   | |`- Re: Could we build a better 6502?David Schultz
|||     |   | `* Re: Could we build a better 6502?MitchAlsup
|||     |   |  `* Re: Could we build a better 6502?pec...@gmail.com
|||     |   |   `- Re: Could we build a better 6502?MitchAlsup
|||     |   `- Re: Could we build a better 6502?MitchAlsup
|||     `* Re: Could we build a better 6502?Anton Ertl
|||      `* Re: Could we build a better 6502?Thomas Koenig
|||       `* Re: Could we build a better 6502?MitchAlsup
|||        +* Re: Could we build a better 6502?Marcus
|||        |+* Re: Could we build a better 6502?MitchAlsup
|||        ||`* Re: Could we build a better 6502?Thomas Koenig
|||        || `- Re: Could we build a better 6502?Anton Ertl
|||        |`- Re: Could we build a better 6502?Thomas Koenig
|||        `- Re: Could we build a better 6502?Thomas Koenig
||+* Re: Could we build a better 6502?Quadibloc
|||`- Re: Could we build a better PDP-8, was 6502?John Levine
||`- Re: Could we build a better 6502?Tim Rentsch
|`* Re: Could we build a better 6502?Quadibloc
| +* Re: Could we build a better 6502?Thomas Koenig
| |`* Re: Could we build a better 6502?Anton Ertl
| | `* Re: Could we build a better 6502?David Schultz
| |  `* Re: Could we build a better 6502?Brett
| |   `* Re: Could we build a better 6502?David Schultz
| |    `* Re: Could we build a better 6502?Brett
| |     `* Re: Could we build a better 6502?David Schultz
| |      `* Re: Could we build a better 6502?Brett
| |       `- Re: Could we build a better 6502?David Schultz
| +* Re: Could we build a better 6502?Stefan Monnier
| |`* Re: Could we build a better 6502?Thomas Koenig
| | +* Re: Could we build a better 6502?Stefan Monnier
| | |+* Re: Could we build a better 6502?MitchAlsup
| | ||`- Re: Could we build a better 6502?pec...@gmail.com
| | |`* Re: Could we build a better 6502?pec...@gmail.com
| | +- Re: Could we build a better 6502?MitchAlsup
| | `* Re: Could we build a better 6502?pec...@gmail.com
| `- Re: Could we build a better 6502?MitchAlsup
+* Re: Could we build a better 6502?Marcus
+* Re: Could we build a better 6502?MitchAlsup
+* Re: Could we build a better 6502?EricP
+* Re: Could we build a better 6502?Guillaume
+- Re: Could we build a better 6502?EricP
+* Re: Could we build a better 6502?Timothy McCaffrey
+- Re: Could we build a better 6502?JimBrakefield
+* Re: Could we build a better 6502?Anssi Saari
+* Re: Could we build a better 6502?John Dallman
+* Re: Could we build a better 6502?Anton Ertl
+* Re: Could we build a better 6502?Michael Barry
+* Re: Could we build a better 6502?pec...@gmail.com
+* Re: Could we build a better 6502?Bernd Linsel
+- Re: Could we build a better 6502?clamky
+* Re: Could we build a better 6502?Quadibloc
`- Re: Could we build a better 6502?Quadibloc

Pages:12345678910111213
Re: OoO S/360 descendants

<Z86_I.150242$T_8.5876@fx48.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20352&group=comp.arch#20352

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx48.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <357b0396-74c4-4bd9-a9a9-3d743cb5f25dn@googlegroups.com>
In-Reply-To: <357b0396-74c4-4bd9-a9a9-3d743cb5f25dn@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 49
Message-ID: <Z86_I.150242$T_8.5876@fx48.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Wed, 08 Sep 2021 17:11:21 UTC
Date: Wed, 08 Sep 2021 13:11:21 -0400
X-Received-Bytes: 3706
 by: EricP - Wed, 8 Sep 2021 17:11 UTC

MitchAlsup wrote:
> On Wednesday, September 8, 2021 at 8:49:10 AM UTC-5, EricP wrote:
>> Anton Ertl wrote:
>>> Stephen Fuld <sf...@alumni.cmu.edu.invalid> writes:
>>>> I haven't given any thought at all to what the situation is on an X86
>>>> CPU with fixed length block disks, etc. Remember, these instructions
>>>> are S/360 descendants specific.
>>> I am not limiting myself to S/360 descendants just because they have
>>> such instructions. If I can solve the problem just as effectively
>>> with AMD64-based servers, there is no need for specialized hardware.
>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>> integrated with IO so records are gathered during the disk write operation.
>>
>> Rather than sort records by moving them, sort a vector of descriptors.
>> Then pass this sorted vector containing virtual address and length of each
>> item to the IO write. IO translates each virtual descriptor to one or more
>> physical descriptors, because records can straddle physical pages.
>> Then pass this physical fragment descriptor vector directly to the
>> disk DMA device so it can stream the record fragments directly
>> to sequential disk blocks in one long write.
>>
>> In other words, the physical descriptor vector acts like an IOMMU
>> but for arbitrary byte length fragments rather than whole pages.
> <
> But if you already HAVE an I/O MMU, then you just need the virtual
> address and length (into an address space) and simply program the
> I/O using virtual. The fact any given record straddles a page boundary
> is then not exposed until DMA actually crosses the page boundary.
> <
> This should save a bunch of analysis and copying prior to performing
> the I/O.

Even better if the IOMMU can reuse the same page tables.
Relatively straight forward for hierarchical tables.
I don't know about zSeries inverted page tables.

An IO would just require checking that each referenced
page was resident, fault it in if not, then pin it.
If all the original records were together in a contiguous buffer,
and all the fragment descriptors are in a contiguous vector,
this is straight forward.

The device DMA could use the client process virtual addresses directly
for indexing the descriptor vector and accessing the fragments,
with translation on the fly by the IOMMU.

>> Using multiple buffers, async IO, multiple SMP threads,
>> cache-aware sorts on multiple cores,
>> one could really go to town on concurrency for this.

Re: OoO S/360 descendants

<511cd21a-0366-44c1-964d-93180209e5d2n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20354&group=comp.arch#20354

  copy link   Newsgroups: comp.arch
X-Received: by 2002:aed:3004:: with SMTP id 4mr4819454qte.407.1631123396863; Wed, 08 Sep 2021 10:49:56 -0700 (PDT)
X-Received: by 2002:a4a:c904:: with SMTP id v4mr3953458ooq.26.1631123396598; Wed, 08 Sep 2021 10:49:56 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!tr1.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 8 Sep 2021 10:49:56 -0700 (PDT)
In-Reply-To: <Z86_I.150242$T_8.5876@fx48.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <357b0396-74c4-4bd9-a9a9-3d743cb5f25dn@googlegroups.com> <Z86_I.150242$T_8.5876@fx48.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <511cd21a-0366-44c1-964d-93180209e5d2n@googlegroups.com>
Subject: Re: OoO S/360 descendants
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 08 Sep 2021 17:49:56 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 65
 by: MitchAlsup - Wed, 8 Sep 2021 17:49 UTC

On Wednesday, September 8, 2021 at 12:11:24 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Wednesday, September 8, 2021 at 8:49:10 AM UTC-5, EricP wrote:
> >> Anton Ertl wrote:
> >>> Stephen Fuld <sf...@alumni.cmu.edu.invalid> writes:
> >>>> I haven't given any thought at all to what the situation is on an X86
> >>>> CPU with fixed length block disks, etc. Remember, these instructions
> >>>> are S/360 descendants specific.
> >>> I am not limiting myself to S/360 descendants just because they have
> >>> such instructions. If I can solve the problem just as effectively
> >>> with AMD64-based servers, there is no need for specialized hardware.
> >> Sort-merge might make use of general HW scatter-gather DMA mechanism
> >> integrated with IO so records are gathered during the disk write operation.
> >>
> >> Rather than sort records by moving them, sort a vector of descriptors.
> >> Then pass this sorted vector containing virtual address and length of each
> >> item to the IO write. IO translates each virtual descriptor to one or more
> >> physical descriptors, because records can straddle physical pages.
> >> Then pass this physical fragment descriptor vector directly to the
> >> disk DMA device so it can stream the record fragments directly
> >> to sequential disk blocks in one long write.
> >>
> >> In other words, the physical descriptor vector acts like an IOMMU
> >> but for arbitrary byte length fragments rather than whole pages.
> > <
> > But if you already HAVE an I/O MMU, then you just need the virtual
> > address and length (into an address space) and simply program the
> > I/O using virtual. The fact any given record straddles a page boundary
> > is then not exposed until DMA actually crosses the page boundary.
> > <
> > This should save a bunch of analysis and copying prior to performing
> > the I/O.
<
> Even better if the IOMMU can reuse the same page tables.
> Relatively straight forward for hierarchical tables.
> I don't know about zSeries inverted page tables.
<
I don't think the organization of the table matters much, as long as
you start with a virtual address and some association to the address
space in which that virtual address accesses.
<
The modern direction for I/O MMUs is to use the same tables as the
CPUs use. This gives the important property that a virtual address
is a virtual address in the CPU or in the DMA device.
<
About the only things that violate this property are devices without
a full address space (24-bit or 32-bit VASs.) Modern SATA devices
do not have these problems. For these degenerate devices, the
I/O MMU avoids bounce buffers using virtual DMA from the
device virtual address space into the user virtual address space.
>
> An IO would just require checking that each referenced
> page was resident, fault it in if not, then pin it.
> If all the original records were together in a contiguous buffer,
> and all the fragment descriptors are in a contiguous vector,
> this is straight forward.
>
> The device DMA could use the client process virtual addresses directly
> for indexing the descriptor vector and accessing the fragments,
> with translation on the fly by the IOMMU.
<
Exactly
<
> >> Using multiple buffers, async IO, multiple SMP threads,
> >> cache-aware sorts on multiple cores,
> >> one could really go to town on concurrency for this.

Re: fast sort/merge, OoO S/360 descendants

<shb240$nak$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20356&group=comp.arch#20356

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: fast sort/merge, OoO S/360 descendants
Date: Wed, 8 Sep 2021 19:15:12 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <shb240$nak$1@gal.iecc.com>
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad>
Injection-Date: Wed, 8 Sep 2021 19:15:12 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="23892"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sde7eg$hgb$1@newsreader4.netcologne.de> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Wed, 8 Sep 2021 19:15 UTC

According to EricP <ThatWouldBeTelling@thevillage.com>:
>Sort-merge might make use of general HW scatter-gather DMA mechanism
>integrated with IO so records are gathered during the disk write operation.
>
>Rather than sort records by moving them, sort a vector of descriptors.
>Then pass this sorted vector containing virtual address and length of each
>item to the IO write.

The zSeries virtual memory uses conventional page tables with 4K pages and
up to five levels of tables depending on address size. It is not a reverse
map like the POWER's.

The I/O system does not run through the pager and has a separate way
to deal with page mapping. Each I/O command word can point at an array
of indirect addressing words called MIDAW or TIDAW depending on which
generation of I/O architecture it's using. Each IDAW is 16 bytes with
a count and address and some flags. The block that an IDAW points to
cannot cross a page boundary; if it does you need to break it into two
IDAWs.

The point of IDAW was that that application program wrote a channel
program (yes, applications write their own channel programs) with each
command word pointing to an address in virtual memory. The OS then
slightly adjusted the channel instructions by turning on a flag bit to
use IDAWs, and replacing the address in the command word with the
adddress of IDAWs in real memory that point to the physical
address(es) of the page(es) where the data are. Usually one IDAW would
be enough, two if it crossed a page boundary, more only if the block
is so big it crosses into more than two pages. The old I/O system had
a scatter/gather feature called data chaining but it'g gone in the new
system.

Having explained all that, even though you could use the IDAW stuff
for scatter/gather, in practice I think it's only used for backward
compatibility for old programs. Modern systems all integrate the disk
I/O with the pager, so all disk I/O is page sized blocks, 4K in this
case, on 4K boundaries. I am pretty sure that the effort of creating a
set of 16 byte IDAWs for scattered records and then having the OS
check them and split them if a block crosses a page boundary would not
be worth the effort compared to the normal approach of moving the
records into one output buffer and doing one I/O operation to write it
out.

They do support command chaning, so if you had a great big buffer
that filled up 100 pages, it could do one I/O operation to do 100 disk
writes.
--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: OoO S/360 descendants

<shb2ea$1mso$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20357&group=comp.arch#20357

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!ppYixYMWAWh/woI8emJOIQ.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Wed, 8 Sep 2021 21:20:45 +0200
Organization: Aioe.org NNTP Server
Message-ID: <shb2ea$1mso$1@gioia.aioe.org>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: gioia.aioe.org; logging-data="56216"; posting-host="ppYixYMWAWh/woI8emJOIQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.9
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Wed, 8 Sep 2021 19:20 UTC

EricP wrote:
> Anton Ertl wrote:
>> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>>> I haven't given any thought at all to what the situation is on an X86
>>> CPU with fixed length block disks, etc.  Remember, these instructions
>>> are S/360 descendants specific.
>>
>> I am not limiting myself to S/360 descendants just because they have
>> such instructions.  If I can solve the problem just as effectively
>> with AMD64-based servers, there is no need for specialized hardware.
>
> Sort-merge might make use of general HW scatter-gather DMA mechanism
> integrated with IO so records are gathered during the disk write operation.
>
> Rather than sort records by moving them, sort a vector of descriptors.
> Then pass this sorted vector containing virtual address and length of each
> item to the IO write. IO translates each virtual descriptor to one or more
> physical descriptors, because records can straddle physical pages.
> Then pass this physical fragment descriptor vector directly to the
> disk DMA device so it can stream the record fragments directly
> to sequential disk blocks in one long write.
>
> In other words, the physical descriptor vector acts like an IOMMU
> but for arbitrary byte length fragments rather than whole pages.
>
> Using multiple buffers, async IO, multiple SMP threads,
> cache-aware sorts on multiple cores,
> one could really go to town on concurrency for this.

I did consider that solution, and it would really suck. :-(

The only way to get anything like reasonable speed is by treating all
the disk drives like tape unit, i.e. sequential access only.

The only way I figured out to use key+index in the sorting stage was if
those much smaller records could more or less fit in half the memory,
because then you could sort them, then make another single pass over the
input array while picking up exactly those full records that corresponds
to the first chunk of sorted records. Each such record would be stored
in its calculated target slot, but it would lead to many more disk
passes. :-(

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: more than we wanted to know about sort/merge, was OoO S/360 descendants

<shb3ic$poi$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20358&group=comp.arch#20358

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: more than we wanted to know about sort/merge, was OoO S/360 descendants
Date: Wed, 8 Sep 2021 19:39:56 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <shb3ic$poi$1@gal.iecc.com>
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
Injection-Date: Wed, 8 Sep 2021 19:39:56 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="26386"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sde7eg$hgb$1@newsreader4.netcologne.de> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Wed, 8 Sep 2021 19:39 UTC

According to Stephen Fuld <sfuld@alumni.cmu.edu.invalid>:
>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>> integrated with IO so records are gathered during the disk write operation.
>
>Given that S/360 had the equivalent of scatter/gather (called Data
>Chaining in S/360 parlance), they might very well have used it. As I
>said, I really couldn't find much information on the internal algorithm
>used by IBM's sort program.

Probably not. On low end systems data chaining didn't work very well
because the system sometimes didn't have time to fetch and decode another
CCW in the middle of a disk block. I get the impression it was mostly used
in specific applications like separating the key and the data in ISAM data.

> As I said, I really couldn't find much information on the internal algorithm
> used by IBM's sort program.

http://bitsavers.org/pdf/ibm/360/dos/plm/Y24-5021-0_DOS_Sort_Merge_PLM_Aug66.pdf
http://bitsavers.org/pdf/ibm/370/OS_VS/sort_merge/LY33-8042-6_OS_VS_Sort-Merge_Logic_197909.pdf

Looks to me like they paid a lot of attention to arranging the data on disk
to minimize rotational and seek delay, but they moved the data into the
output buffer, no chaining funny business.
--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: OoO S/360 descendants

<Dz9_I.2$_n1.0@fx14.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20362&group=comp.arch#20362

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!4.us.feeder.erje.net!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx14.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
In-Reply-To: <shapci$gp8$1@dont-email.me>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 30
Message-ID: <Dz9_I.2$_n1.0@fx14.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Wed, 08 Sep 2021 21:04:35 UTC
Date: Wed, 08 Sep 2021 16:48:47 -0400
X-Received-Bytes: 2442
 by: EricP - Wed, 8 Sep 2021 20:48 UTC

Stephen Fuld wrote:
> On 9/8/2021 6:48 AM, EricP wrote:
>> Anton Ertl wrote:
>>> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>>>> I haven't given any thought at all to what the situation is on an
>>>> X86 CPU with fixed length block disks, etc. Remember, these
>>>> instructions are S/360 descendants specific.
>>>
>>> I am not limiting myself to S/360 descendants just because they have
>>> such instructions. If I can solve the problem just as effectively
>>> with AMD64-based servers, there is no need for specialized hardware.
>>
>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>> integrated with IO so records are gathered during the disk write
>> operation.
>
> Given that S/360 had the equivalent of scatter/gather (called Data
> Chaining in S/360 parlance), they might very well have used it. As I
> said, I really couldn't find much information on the internal algorithm
> used by IBM's sort program.

Would that have been byte fragment chaining or block/page chaining?

VAX 780 had an IOMMU for whole page DMA scatter/gather for block devices.
Certain individual devices could do byte buffer DMA but no chaining.

This would require doing long vectors of byte fragment DMA chaining
across many pages to a block device. Its seems an unusual combination.

Re: OoO S/360 descendants

<Ez9_I.3$_n1.2@fx14.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20363&group=comp.arch#20363

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx14.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shb2ea$1mso$1@gioia.aioe.org>
In-Reply-To: <shb2ea$1mso$1@gioia.aioe.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 63
Message-ID: <Ez9_I.3$_n1.2@fx14.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Wed, 08 Sep 2021 21:04:36 UTC
Date: Wed, 08 Sep 2021 17:04:09 -0400
X-Received-Bytes: 3771
 by: EricP - Wed, 8 Sep 2021 21:04 UTC

Terje Mathisen wrote:
> EricP wrote:
>> Anton Ertl wrote:
>>> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>>>> I haven't given any thought at all to what the situation is on an
>>>> X86 CPU with fixed length block disks, etc. Remember, these
>>>> instructions are S/360 descendants specific.
>>>
>>> I am not limiting myself to S/360 descendants just because they have
>>> such instructions. If I can solve the problem just as effectively
>>> with AMD64-based servers, there is no need for specialized hardware.
>>
>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>> integrated with IO so records are gathered during the disk write
>> operation.
>>
>> Rather than sort records by moving them, sort a vector of descriptors.
>> Then pass this sorted vector containing virtual address and length of
>> each
>> item to the IO write. IO translates each virtual descriptor to one or
>> more
>> physical descriptors, because records can straddle physical pages.
>> Then pass this physical fragment descriptor vector directly to the
>> disk DMA device so it can stream the record fragments directly
>> to sequential disk blocks in one long write.
>>
>> In other words, the physical descriptor vector acts like an IOMMU
>> but for arbitrary byte length fragments rather than whole pages.
>>
>> Using multiple buffers, async IO, multiple SMP threads,
>> cache-aware sorts on multiple cores,
>> one could really go to town on concurrency for this.
>
> I did consider that solution, and it would really suck. :-(

I'm open to that possibility. :-)
But we may be thinking of different scenarios.

> The only way to get anything like reasonable speed is by treating all
> the disk drives like tape unit, i.e. sequential access only.

Right. But the scenarios for two extremes look like

1) a single 1 TB file on a single disk doing an in-place sort

2) a single 1 TB file on a source disk S:,
a single sorted output file on a dest disk D:
and N disks to hold TN temp fragment files.

I'm thinking of the second, I suspect you are thinking of the first.

> The only way I figured out to use key+index in the sorting stage was if
> those much smaller records could more or less fit in half the memory,
> because then you could sort them, then make another single pass over the
> input array while picking up exactly those full records that corresponds
> to the first chunk of sorted records. Each such record would be stored
> in its calculated target slot, but it would lead to many more disk
> passes. :-(
>
> Terje

That sounds like an in place sort.

Re: OoO S/360 descendants

<xN9_I.75446$rl3.34885@fx45.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20365&group=comp.arch#20365

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx45.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me> <Dz9_I.2$_n1.0@fx14.iad>
In-Reply-To: <Dz9_I.2$_n1.0@fx14.iad>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 37
Message-ID: <xN9_I.75446$rl3.34885@fx45.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Wed, 08 Sep 2021 21:19:25 UTC
Date: Wed, 08 Sep 2021 17:19:25 -0400
X-Received-Bytes: 2870
 by: EricP - Wed, 8 Sep 2021 21:19 UTC

EricP wrote:
> Stephen Fuld wrote:
>> On 9/8/2021 6:48 AM, EricP wrote:
>>> Anton Ertl wrote:
>>>> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>>>>> I haven't given any thought at all to what the situation is on an
>>>>> X86 CPU with fixed length block disks, etc. Remember, these
>>>>> instructions are S/360 descendants specific.
>>>>
>>>> I am not limiting myself to S/360 descendants just because they have
>>>> such instructions. If I can solve the problem just as effectively
>>>> with AMD64-based servers, there is no need for specialized hardware.
>>>
>>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>>> integrated with IO so records are gathered during the disk write
>>> operation.
>>
>> Given that S/360 had the equivalent of scatter/gather (called Data
>> Chaining in S/360 parlance), they might very well have used it. As I
>> said, I really couldn't find much information on the internal
>> algorithm used by IBM's sort program.
>
> Would that have been byte fragment chaining or block/page chaining?
>
> VAX 780 had an IOMMU for whole page DMA scatter/gather for block devices.
> Certain individual devices could do byte buffer DMA but no chaining.
>
> This would require doing long vectors of byte fragment DMA chaining
> across many pages to a block device. Its seems an unusual combination.

Or maybe not that unusual in an IBM world.
Didn't they used to (and maybe still do) allow users to format
a disk track/cylinder with their own disk sector sizes?
So someone can have a 317 byte disk sector if they want one?

In that environment the DMA hardware probably already supports chaining
DMA fragments with byte length resolution.

Re: OoO S/360 descendants

<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20366&group=comp.arch#20366

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:4c8f:: with SMTP id j15mr541161qtv.324.1631137971230;
Wed, 08 Sep 2021 14:52:51 -0700 (PDT)
X-Received: by 2002:aca:d8c3:: with SMTP id p186mr4040539oig.51.1631137971039;
Wed, 08 Sep 2021 14:52:51 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 8 Sep 2021 14:52:50 -0700 (PDT)
In-Reply-To: <xN9_I.75446$rl3.34885@fx45.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
Subject: Re: OoO S/360 descendants
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 08 Sep 2021 21:52:51 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 51
 by: MitchAlsup - Wed, 8 Sep 2021 21:52 UTC

On Wednesday, September 8, 2021 at 4:19:27 PM UTC-5, EricP wrote:
> EricP wrote:
> > Stephen Fuld wrote:
> >> On 9/8/2021 6:48 AM, EricP wrote:
> >>> Anton Ertl wrote:
> >>>> Stephen Fuld <sf...@alumni.cmu.edu.invalid> writes:
> >>>>> I haven't given any thought at all to what the situation is on an
> >>>>> X86 CPU with fixed length block disks, etc. Remember, these
> >>>>> instructions are S/360 descendants specific.
> >>>>
> >>>> I am not limiting myself to S/360 descendants just because they have
> >>>> such instructions. If I can solve the problem just as effectively
> >>>> with AMD64-based servers, there is no need for specialized hardware.
> >>>
> >>> Sort-merge might make use of general HW scatter-gather DMA mechanism
> >>> integrated with IO so records are gathered during the disk write
> >>> operation.
> >>
> >> Given that S/360 had the equivalent of scatter/gather (called Data
> >> Chaining in S/360 parlance), they might very well have used it. As I
> >> said, I really couldn't find much information on the internal
> >> algorithm used by IBM's sort program.
> >
> > Would that have been byte fragment chaining or block/page chaining?
> >
> > VAX 780 had an IOMMU for whole page DMA scatter/gather for block devices.
> > Certain individual devices could do byte buffer DMA but no chaining.
> >
> > This would require doing long vectors of byte fragment DMA chaining
> > across many pages to a block device. Its seems an unusual combination.
> Or maybe not that unusual in an IBM world.
> Didn't they used to (and maybe still do) allow users to format
> a disk track/cylinder with their own disk sector sizes?
<
Early 360s did allow for the disk to be formatted the way the customer
wanted his files to appear. Since the mid 1970s when IBM went DASD
(big time) the disks are all formatted in 4KB sectors.
<
IBM build several disk access methods for the older style, but found out
that fixed partitions and a disk cache had significantly greater performance
on many workloads.
<
> So someone can have a 317 byte disk sector if they want one?
<
One can use on older access method (ISAM, VSAM) and appear to get records
the size they want--but the actual I/O takes place in 4KB sizes. The user is
also charged in 4KB chunks of money per unit time.
>
> In that environment the DMA hardware probably already supports chaining
> DMA fragments with byte length resolution.
<
If I recall correctly, the chaining command was "Transfer in Channel"

Re: OoO S/360 descendants

<69f81041-0054-4a66-8ebd-aa21da5f5cb1n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20367&group=comp.arch#20367

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:aa01:: with SMTP id d1mr438631qvb.47.1631138063568;
Wed, 08 Sep 2021 14:54:23 -0700 (PDT)
X-Received: by 2002:a05:6808:10c8:: with SMTP id s8mr3939671ois.175.1631138063381;
Wed, 08 Sep 2021 14:54:23 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 8 Sep 2021 14:54:23 -0700 (PDT)
In-Reply-To: <Dz9_I.2$_n1.0@fx14.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me> <Dz9_I.2$_n1.0@fx14.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <69f81041-0054-4a66-8ebd-aa21da5f5cb1n@googlegroups.com>
Subject: Re: OoO S/360 descendants
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 08 Sep 2021 21:54:23 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 29
 by: MitchAlsup - Wed, 8 Sep 2021 21:54 UTC

On Wednesday, September 8, 2021 at 4:04:38 PM UTC-5, EricP wrote:
> Stephen Fuld wrote:
> > On 9/8/2021 6:48 AM, EricP wrote:
> >> Anton Ertl wrote:
> >>> Stephen Fuld <sf...@alumni.cmu.edu.invalid> writes:
> >>>> I haven't given any thought at all to what the situation is on an
> >>>> X86 CPU with fixed length block disks, etc. Remember, these
> >>>> instructions are S/360 descendants specific.
> >>>
> >>> I am not limiting myself to S/360 descendants just because they have
> >>> such instructions. If I can solve the problem just as effectively
> >>> with AMD64-based servers, there is no need for specialized hardware.
> >>
> >> Sort-merge might make use of general HW scatter-gather DMA mechanism
> >> integrated with IO so records are gathered during the disk write
> >> operation.
> >
> > Given that S/360 had the equivalent of scatter/gather (called Data
> > Chaining in S/360 parlance), they might very well have used it. As I
> > said, I really couldn't find much information on the internal algorithm
> > used by IBM's sort program.
> Would that have been byte fragment chaining or block/page chaining?
>
> VAX 780 had an IOMMU for whole page DMA scatter/gather for block devices.
> Certain individual devices could do byte buffer DMA but no chaining.
<
VAX also had 512 Byte pages.
>
> This would require doing long vectors of byte fragment DMA chaining
> across many pages to a block device. Its seems an unusual combination.

Re: ancient I/O history, was OoO S/360 descendants

<shbpfs$2c79$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20370&group=comp.arch#20370

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: ancient I/O history, was OoO S/360 descendants
Date: Thu, 9 Sep 2021 01:54:04 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <shbpfs$2c79$1@gal.iecc.com>
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad> <2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
Injection-Date: Thu, 9 Sep 2021 01:54:04 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="78057"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sde7eg$hgb$1@newsreader4.netcologne.de> <Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad> <2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Thu, 9 Sep 2021 01:54 UTC

According to MitchAlsup <MitchAlsup@aol.com>:
>Early 360s did allow for the disk to be formatted the way the customer
>wanted his files to appear. Since the mid 1970s when IBM went DASD
>(big time) the disks are all formatted in 4KB sectors.
><
>IBM build several disk access methods for the older style, but found out
>that fixed partitions and a disk cache had significantly greater performance
>on many workloads.

Those access methods had to work on machines with tiny memories. You could
get useful work done on a DOS machine in 16K. Once memory got cheap, big
blocks and caches made most of the complicated disk stuff pointless.

>> In that environment the DMA hardware probably already supports chaining
>> DMA fragments with byte length resolution.
><
>If I recall correctly, the chaining command was "Transfer in Channel"

No, TIC was a channel program jump. Command chaining was a sequence of
operatios like a seek followed by a read or sequential reads. Data chaining
was scatter/gather within a single I/O operation.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: fast sort/merge, OoO S/360 descendants

<874kau77ha.fsf@localhost>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20372&group=comp.arch#20372

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: lyn...@garlic.com (Anne & Lynn Wheeler)
Newsgroups: comp.arch
Subject: Re: fast sort/merge, OoO S/360 descendants
Date: Wed, 08 Sep 2021 17:28:33 -1000
Organization: Wheeler&Wheeler
Lines: 128
Message-ID: <874kau77ha.fsf@localhost>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<sh8570$t79$1@dont-email.me>
<2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shb240$nak$1@gal.iecc.com>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="ec1d6ab3063f2eab0f0d531fdbfdf669";
logging-data="19583"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+WD6YXX0NAwIcSBKjzui5odfwiI/lF42k="
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Cancel-Lock: sha1:LSqzNb42XAjMADGO/eEjqqnDyR8=
sha1:PLkrDIGZoxb+z6Wu1ddYyn12R6Y=
 by: Anne & Lynn Whee - Thu, 9 Sep 2021 03:28 UTC

John Levine <johnl@taugh.com> writes:
> The zSeries virtual memory uses conventional page tables with 4K pages and
> up to five levels of tables depending on address size. It is not a reverse
> map like the POWER's.
>
> The I/O system does not run through the pager and has a separate way
> to deal with page mapping. Each I/O command word can point at an array
> of indirect addressing words called MIDAW or TIDAW depending on which
> generation of I/O architecture it's using. Each IDAW is 16 bytes with
> a count and address and some flags. The block that an IDAW points to
> cannot cross a page boundary; if it does you need to break it into two
> IDAWs.
>
> The point of IDAW was that that application program wrote a channel
> program (yes, applications write their own channel programs) with each
> command word pointing to an address in virtual memory. The OS then
> slightly adjusted the channel instructions by turning on a flag bit to
> use IDAWs, and replacing the address in the command word with the
> adddress of IDAWs in real memory that point to the physical
> address(es) of the page(es) where the data are. Usually one IDAW would
> be enough, two if it crossed a page boundary, more only if the block
> is so big it crosses into more than two pages. The old I/O system had
> a scatter/gather feature called data chaining but it'g gone in the new
> system.
>
> Having explained all that, even though you could use the IDAW stuff
> for scatter/gather, in practice I think it's only used for backward
> compatibility for old programs. Modern systems all integrate the disk
> I/O with the pager, so all disk I/O is page sized blocks, 4K in this
> case, on 4K boundaries. I am pretty sure that the effort of creating a
> set of 16 byte IDAWs for scattered records and then having the OS
> check them and split them if a block crosses a page boundary would not
> be worth the effort compared to the normal approach of moving the
> records into one output buffer and doing one I/O operation to write it
> out.
>
> They do support command chaning, so if you had a great big buffer
> that filled up 100 pages, it could do one I/O operation to do 100 disk
> writes.

IBM 360 implemented scatter/gather with "chained data" CCWs
(... following CCW was only used for data address) ... problem was that
"channel architecture" mandated that channel command words (CCWs) were
strictly serial with no pre-fetching. This was used by (virtual machine)
CP67 simulated channel programs where the virtual channel program
addresses crossing page boundary were contiguous but not their real
address. As devices got faster, there was smaller & smaller window to
fetch the next CCW from processor memory and decode the address. IDAW
introduceed for 370 allowed the IDAW addresses to be prefetched.

It was also used for the >16mbyte real storage hack for 370 3033 that
was still 24bit instruction (both real & virtual) addressing. They
scavenge two unused bits from the 370 16bit page table entry, 12bit page
number, 2 defined bits, 2 undefined bits. The 12bit page number for
4kbyte pages provided for 16mbyte. The hack prepended the two undefined
bits to the 12bit page number ... allowing translation of 24bit virtual
address into 26bit real addressing ... allowing to run with up to
64mbyte real storage.

370 IDALs were 32bit fields and 3033 hack them to read/write 4k pages
located in >16mbyte area. The problem was kernel instructions needing to
access in virtual pages in the >16mbyte area (with real
addresses). Their original "bring down" hack was to write out a 4k page
from the >16mbyte area and read it back in to <16mbyte page slot. I
provided them with a short instruction hack that put the two page
numbers in (reserved) PTEs and running in virtual mode, then did a MVCL
from the virtual page in the >16mbyte area to the virtual page in the
<16mbyte area. It was also used by 3081 with >16mbyte real storage by
customer still running 370 operating systems (before converting to 31bit
operating system).

Decde ago, a customer asked me to track down the decision to move all
370s to virtual memory (initially announce & ship little changed from
360). Old archived post with some from somebody involved
http://www.garlic.com/~lynn/201d.html#73
basically (OS/360) MVT storage management was so bad that the size of
regions for application executed needed to be four times larger than
actually used. As a result, the typical 1mbyte 370/165 only ran with
four execution regions ... and (in part) because disk i/o was so slow,
much larger multiprogramming was needed to utilize the
processor. Mapping MVT to a 16mbyte virtual address space could increase
the number of concurrent execution regions by a factor of four times
with little or no paging.

There was a little bit of code added for this VS2/SVS to create 16mbyte
virtual address space and handle the (infrequent) page operations. The
biggest problem was I/O. Applications did create some of their own
channel programs ... which now had virtual addresses. However, nearly
all channel programs were created by system libraries routines executing
in the application region ... which also now have virtual
addresses. They all would execute EXCP/SVC0 supervisor call to execute
the passed channel program. Now the biggest amount of code moving
MVT->SVC was borrowing CP67 "CCWTRANS" ... which performed that function
for virtual machines running in virtual address space.

As undergraduate in the 60s, I rewrote lots of CP67 code including doing
dynamic adaptive resource manager ... which included what I called
"scheduling to the bottleneck". In the 70s I started noting that
processor speed and amount of real storage was increasing much faster
than disk speed was increasing (needing increaingly larger
multiprogramming levels to keep processors busy). In the early 80s, I
started saying that over the 15years, disk performance relative disk
system throughput had declined by an order of magnitude (10 times,
i.e. systems got 40-50 times faster, disks only got 3-5 times
faster). Disk division executives took exception and assigned the
division performance group to refute my claims. After a couple weeks
they basically came back on said that I had slightly understated the
problem. The performance group then respun the analysis and presented
suggestions for disk optiization strategies at major customer user group
organization.
https://en.wikipedia.org/wiki/SHARE_(computing)

some recent archived posts mentioning their presentation B874 at SHARE
63 (16Aug1984)
http://www.garlic.com/~lynn/2021g.html#44 iBM System/3 FORTRAN for engineering/science work?
http://www.garlic.com/~lynn/2021f.html#53 3380 disk capacity
http://www.garlic.com/~lynn/2021e.html#33 Univac 90/30 DIAG instruction
http://www.garlic.com/~lynn/2021.html#79 IBM Disk Division
http://www.garlic.com/~lynn/2021.html#59 San Jose bldg 50 and 3380 manufacturing
http://www.garlic.com/~lynn/2021.html#17 Performance History, 5-10Oct1986, SEAS
http://www.garlic.com/~lynn/2019d.html#63 IBM 3330 & 3380
http://www.garlic.com/~lynn/2019b.html#94 MVS Boney Fingers
http://www.garlic.com/~lynn/2019.html#78 370 virtual memory
http://www.garlic.com/~lynn/2018e.html#93 It's 1983: What computer would you buy?
http://www.garlic.com/~lynn/2018c.html#30 Bottlenecks and Capacity planning

--
virtualization experience starting Jan1968, online at home since Mar1970

Re: OoO S/360 descendants

<shc273$1if$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20373&group=comp.arch#20373

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Wed, 8 Sep 2021 21:22:57 -0700
Organization: A noiseless patient Spider
Lines: 75
Message-ID: <shc273$1if$1@dont-email.me>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 9 Sep 2021 04:22:59 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="3fb769abf3b5fb47de0b475692899614";
logging-data="1615"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+bFhecIP5WJlAAzA/Q8Lpq/A1Wis3q+B0="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.14.0
Cancel-Lock: sha1:a98B3v5JAILbBviLAQKBB4FlNZM=
In-Reply-To: <2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
Content-Language: en-US
 by: Stephen Fuld - Thu, 9 Sep 2021 04:22 UTC

On 9/8/2021 2:52 PM, MitchAlsup wrote:
> On Wednesday, September 8, 2021 at 4:19:27 PM UTC-5, EricP wrote:
>> EricP wrote:
>>> Stephen Fuld wrote:
>>>> On 9/8/2021 6:48 AM, EricP wrote:
>>>>> Anton Ertl wrote:
>>>>>> Stephen Fuld <sf...@alumni.cmu.edu.invalid> writes:
>>>>>>> I haven't given any thought at all to what the situation is on an
>>>>>>> X86 CPU with fixed length block disks, etc. Remember, these
>>>>>>> instructions are S/360 descendants specific.
>>>>>>
>>>>>> I am not limiting myself to S/360 descendants just because they have
>>>>>> such instructions. If I can solve the problem just as effectively
>>>>>> with AMD64-based servers, there is no need for specialized hardware.
>>>>>
>>>>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>>>>> integrated with IO so records are gathered during the disk write
>>>>> operation.
>>>>
>>>> Given that S/360 had the equivalent of scatter/gather (called Data
>>>> Chaining in S/360 parlance), they might very well have used it. As I
>>>> said, I really couldn't find much information on the internal
>>>> algorithm used by IBM's sort program.
>>>
>>> Would that have been byte fragment chaining or block/page chaining?
>>>
>>> VAX 780 had an IOMMU for whole page DMA scatter/gather for block devices.
>>> Certain individual devices could do byte buffer DMA but no chaining.
>>>
>>> This would require doing long vectors of byte fragment DMA chaining
>>> across many pages to a block device. Its seems an unusual combination.
>> Or maybe not that unusual in an IBM world.
>> Didn't they used to (and maybe still do) allow users to format
>> a disk track/cylinder with their own disk sector sizes?
> <
> Early 360s did allow for the disk to be formatted the way the customer
> wanted his files to appear. Since the mid 1970s when IBM went DASD
> (big time) the disks are all formatted in 4KB sectors.

IBM 3390 in the early 1990s was the last "SLED" - Single Large Expensive
Disk, and it did native CKD, so you could indeed have arbitrary sized
blocks on the disk.

As of at least the late 1990s, the transfers between the host CPU and
the disk controller was based on CKD format with arbitrary sized blocks,
up to one 3390 track long. All of the controllers by then were cached,
so transfers were actually between the host and the controller cache.
But the back end disks were essentially industry standard SCSI interface
disks with 512 byte blocks. Actually, some models used a little longer
blocks, say 514 to allow additional checking bytes, though this was
totally hidden from the host. The controller had to do the "mapping"
between the arbitrary record sizes the host expected and the 512 byte
blocks on the disk.

> <
> IBM build several disk access methods for the older style, but found out
> that fixed partitions and a disk cache had significantly greater performance
> on many workloads.
> <
>> So someone can have a 317 byte disk sector if they want one?
> <
> One can use on older access method (ISAM, VSAM) and appear to get records
> the size they want--but the actual I/O takes place in 4KB sizes. The user is
> also charged in 4KB chunks of money per unit time.

I can't speak about charging, but at least in the late 1990s, the 4K
actual I/O wasn't true, at least to/from the actual physical disks.

--
- Stephen Fuld
(e-mail address disguised to prevent spam)

Re: OoO S/360 descendants

<2Fo_I.1458$ol1.620@fx42.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20374&group=comp.arch#20374

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx42.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com> <sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at> <sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at> <sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at> <sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shb2ea$1mso$1@gioia.aioe.org> <Ez9_I.3$_n1.2@fx14.iad>
In-Reply-To: <Ez9_I.3$_n1.2@fx14.iad>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 93
Message-ID: <2Fo_I.1458$ol1.620@fx42.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Thu, 09 Sep 2021 14:14:22 UTC
Date: Thu, 09 Sep 2021 10:14:00 -0400
X-Received-Bytes: 5077
X-Original-Bytes: 5026
 by: EricP - Thu, 9 Sep 2021 14:14 UTC

EricP wrote:
> Terje Mathisen wrote:
>> EricP wrote:
>>> Anton Ertl wrote:
>>>> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>>>>> I haven't given any thought at all to what the situation is on an
>>>>> X86 CPU with fixed length block disks, etc. Remember, these
>>>>> instructions are S/360 descendants specific.
>>>>
>>>> I am not limiting myself to S/360 descendants just because they have
>>>> such instructions. If I can solve the problem just as effectively
>>>> with AMD64-based servers, there is no need for specialized hardware.
>>>
>>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>>> integrated with IO so records are gathered during the disk write
>>> operation.
>>>
>>> Rather than sort records by moving them, sort a vector of descriptors.
>>> Then pass this sorted vector containing virtual address and length of
>>> each
>>> item to the IO write. IO translates each virtual descriptor to one or
>>> more
>>> physical descriptors, because records can straddle physical pages.
>>> Then pass this physical fragment descriptor vector directly to the
>>> disk DMA device so it can stream the record fragments directly
>>> to sequential disk blocks in one long write.
>>>
>>> In other words, the physical descriptor vector acts like an IOMMU
>>> but for arbitrary byte length fragments rather than whole pages.
>>>
>>> Using multiple buffers, async IO, multiple SMP threads,
>>> cache-aware sorts on multiple cores,
>>> one could really go to town on concurrency for this.
>>
>> I did consider that solution, and it would really suck. :-(
>
> I'm open to that possibility. :-)
> But we may be thinking of different scenarios.
>
>> The only way to get anything like reasonable speed is by treating all
>> the disk drives like tape unit, i.e. sequential access only.
>
> Right. But the scenarios for two extremes look like
>
> 1) a single 1 TB file on a single disk doing an in-place sort
>
> 2) a single 1 TB file on a source disk S:,
> a single sorted output file on a dest disk D:
> and N disks to hold TN temp fragment files.
>
> I'm thinking of the second, I suspect you are thinking of the first.
>
>> The only way I figured out to use key+index in the sorting stage was
>> if those much smaller records could more or less fit in half the
>> memory, because then you could sort them, then make another single
>> pass over the input array while picking up exactly those full records
>> that corresponds to the first chunk of sorted records. Each such
>> record would be stored in its calculated target slot, but it would
>> lead to many more disk passes. :-(
>>
>> Terje
>
> That sounds like an in place sort.

This is what I was thinking, plus the next section "Additional passes"

https://en.wikipedia.org/wiki/External_sorting#External_merge_sort

Combining the "external sort" approach with multiple rotating work buffers,
buffer A is doing an async read, B is sorting, C is async writing.
When all are done, rotate the buffers.
Balance the buffer size, read and write IO times vs sort time.
That keeps 1 cpu/thread and 2 disks busy.

There is some more concurrency to be had as submitting the async
read and write IOs for the large work buffers involves non-trivial work,
pinning pages, allocating IOMMU space, programming IOMMU.
There could be 2 more cpu/threads doing IO prep while one sorts.

The initial source file read is constrained as there is only 1 disk
and our async read-ahead will keep it fully utilized.
By locating the output sort buffers on different disks we don't
have to move the source disk head so reads will be much quicker.

There is the question is how to best utilize N temp disks.
By writing the sort buffers onto N disks, the later merge
can read N disks at once without moving the disk heads.
Again using an A-B-C rotating buffer approach but this time N way,
and writing to a different disk so we don't move the read heads.

Re: OoO S/360 descendants

<87wnnpr8ds.fsf@localhost>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20376&group=comp.arch#20376

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: lyn...@garlic.com (Anne & Lynn Wheeler)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Thu, 09 Sep 2021 07:01:03 -1000
Organization: Wheeler&Wheeler
Lines: 11
Message-ID: <87wnnpr8ds.fsf@localhost>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com>
<2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com>
<2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me>
<2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me>
<2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
<shc273$1if$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="ec1d6ab3063f2eab0f0d531fdbfdf669";
logging-data="7529"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+C3/3y7rxPcpJoKNHV/v8ONgCgASqSeRw="
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Cancel-Lock: sha1:p8CWGPrYaG2a5iwdz4DofQ/jpqc=
sha1:ldDMLxArRontslLgqrTRNrhNewg=
 by: Anne & Lynn Whee - Thu, 9 Sep 2021 17:01 UTC

Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
> IBM 3390 in the early 1990s was the last "SLED" - Single Large
> Expensive Disk, and it did native CKD, so you could indeed have
> arbitrary sized blocks on the disk.

starting with 3380s ... it was CKD simulated on top of form of fixed
block ... it can be seen where records/track formulas required rounding
up record lengths to a "fixed" cell size.

--
virtualization experience starting Jan1968, online at home since Mar1970

Re: OoO S/360 descendants

<shdf2t$ce7$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20377&group=comp.arch#20377

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Thu, 9 Sep 2021 10:08:45 -0700
Organization: A noiseless patient Spider
Lines: 72
Message-ID: <shdf2t$ce7$1@dont-email.me>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
<shc273$1if$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 9 Sep 2021 17:08:45 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="3fb769abf3b5fb47de0b475692899614";
logging-data="12743"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+FH8d/c3gT2w0QkDxaNxo02M1P01DqPfk="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.14.0
Cancel-Lock: sha1:rsDsnegGJh6knhZCX6MMPhbiDh4=
In-Reply-To: <shc273$1if$1@dont-email.me>
Content-Language: en-US
 by: Stephen Fuld - Thu, 9 Sep 2021 17:08 UTC

On 9/8/2021 9:22 PM, Stephen Fuld wrote:

Sorry to follow up my own post, but I think I may understand where the
disagreement is.

> On 9/8/2021 2:52 PM, MitchAlsup wrote:

snip

>> Early 360s did allow for the disk to be formatted the way the customer
>> wanted his files to appear. Since the mid 1970s when IBM went DASD
>> (big time) the disks are all formatted in 4KB sectors.
>
> IBM 3390 in the early 1990s was the last "SLED" - Single Large Expensive
> Disk, and it did native CKD, so you could indeed have arbitrary sized
> blocks on the disk.
>
>
> As of at least the late 1990s, the transfers between the host CPU and
> the disk controller was based on CKD format with arbitrary sized blocks,
> up to one 3390 track long.  All of the controllers by then were cached,
> so transfers were actually between the host and the controller cache.
> But the back end disks were essentially industry standard SCSI interface
> disks with 512 byte blocks.  Actually, some models used a little longer
> blocks, say 514 to allow additional checking bytes, though this was
> totally hidden from the host.  The controller had to do the "mapping"
> between the arbitrary record sizes the host expected and the 512 byte
> blocks on the disk.
>
>
>> <
>> IBM build several disk access methods for the older style, but found out
>> that fixed partitions and a disk cache had significantly greater
>> performance
>> on many workloads.
>> <
>>> So someone can have a 317 byte disk sector if they want one?
>> <
>> One can use on older access method (ISAM, VSAM) and appear to get records
>> the size they want--but the actual I/O takes place in 4KB sizes. The
>> user is
>> also charged in 4KB chunks of money per unit time.
>
> I can't speak about charging, but at least in the late 1990s, the 4K
> actual I/O wasn't true, at least to/from the actual physical disks.

I think what Mitch is talking about is the advent of VSAM. Prior access
methods, QSAM, ISAM, BDAM, etc. had the user specify the disk block
size, and indeed many arbitrary sizes were used. My understanding of
VSAM, was that, for at least some uses, it packed individual records
into 4K (or multiple 4K) blocks. So if you had a direct access file,
instead of reading the actual sized record you needed, you read the 4K
block that contained that record, then potentially used information
stored within that block the get to the individual record.

So, to the user, it looked like 4K reads and writes. To the host side
of the disk controller, it looked like any other CKD (actually by that
time ECKD) read or write that just happened to have a length of 4K.

To the back end of the disk controller, it looked just like it did
before. IIRC there were 12 4K records per 3990 track (a 3990 track had
56,664 bytes) and each track had the same count fields etc. that they
always had. And the actual disks were formatted with 512 byte sectors,
some of which (typically more than 4K/512 due to count fields, data
alignment, etc.) were read or written to the disk.

--
- Stephen Fuld
(e-mail address disguised to prevent spam)

Re: OoO S/360 descendants

<shdfbs$fdr$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20378&group=comp.arch#20378

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Thu, 9 Sep 2021 10:13:30 -0700
Organization: A noiseless patient Spider
Lines: 16
Message-ID: <shdfbs$fdr$1@dont-email.me>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
<shc273$1if$1@dont-email.me> <87wnnpr8ds.fsf@localhost>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 9 Sep 2021 17:13:32 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="3fb769abf3b5fb47de0b475692899614";
logging-data="15803"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18/ZB2sy5kfiVdl16NgPSJTV1lsZ3cD7KI="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.14.0
Cancel-Lock: sha1:NoDjuj/BbyPXNBPXKgQXiSJwb8I=
In-Reply-To: <87wnnpr8ds.fsf@localhost>
Content-Language: en-US
 by: Stephen Fuld - Thu, 9 Sep 2021 17:13 UTC

On 9/9/2021 10:01 AM, Anne & Lynn Wheeler wrote:
> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>> IBM 3390 in the early 1990s was the last "SLED" - Single Large
>> Expensive Disk, and it did native CKD, so you could indeed have
>> arbitrary sized blocks on the disk.
>
> starting with 3380s ... it was CKD simulated on top of form of fixed
> block ... it can be seen where records/track formulas required rounding
> up record lengths to a "fixed" cell size.

Yes. I can't find the number of bytes per cell on the track, but it was
certainly way less than 4K.

--
- Stephen Fuld
(e-mail address disguised to prevent spam)

Re: more than we wanted to know about sort/merge, was OoO S/360 descendants

<bAs_I.75734$rl3.46366@fx45.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20379&group=comp.arch#20379

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx45.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: more than we wanted to know about sort/merge, was OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me> <shb3ic$poi$1@gal.iecc.com>
In-Reply-To: <shb3ic$poi$1@gal.iecc.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 31
Message-ID: <bAs_I.75734$rl3.46366@fx45.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Thu, 09 Sep 2021 18:42:15 UTC
Date: Thu, 09 Sep 2021 14:41:29 -0400
X-Received-Bytes: 2458
 by: EricP - Thu, 9 Sep 2021 18:41 UTC

John Levine wrote:
> According to Stephen Fuld <sfuld@alumni.cmu.edu.invalid>:
>>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>>> integrated with IO so records are gathered during the disk write operation.
>> Given that S/360 had the equivalent of scatter/gather (called Data
>> Chaining in S/360 parlance), they might very well have used it. As I
>> said, I really couldn't find much information on the internal algorithm
>> used by IBM's sort program.
>
> Probably not. On low end systems data chaining didn't work very well
> because the system sometimes didn't have time to fetch and decode another
> CCW in the middle of a disk block. I get the impression it was mostly used
> in specific applications like separating the key and the data in ISAM data.
>
>> As I said, I really couldn't find much information on the internal algorithm
>> used by IBM's sort program.
>
> http://bitsavers.org/pdf/ibm/360/dos/plm/Y24-5021-0_DOS_Sort_Merge_PLM_Aug66.pdf
> http://bitsavers.org/pdf/ibm/370/OS_VS/sort_merge/LY33-8042-6_OS_VS_Sort-Merge_Logic_197909.pdf
>
> Looks to me like they paid a lot of attention to arranging the data on disk
> to minimize rotational and seek delay, but they moved the data into the
> output buffer, no chaining funny business.

This PDF details the SORTL instructions (chapter 26 at the bottom).

The Enhanced-Sort Facility for z/Architecture (SA22-1082-00)
https://www.ibm.com/support/pages/node/6339945
https://www.ibm.com/support/pages/system/files/2020-09/SA22-1082-00.pdf

Re: more than we wanted to know about sort/merge, was OoO S/360 descendants

<_Os_I.43731$%Z2.16201@fx06.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20380&group=comp.arch#20380

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx06.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: more than we wanted to know about sort/merge, was OoO S/360 descendants
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <2021Sep8.082614@mips.complang.tuwien.ac.at> <nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me> <shb3ic$poi$1@gal.iecc.com>
In-Reply-To: <shb3ic$poi$1@gal.iecc.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 31
Message-ID: <_Os_I.43731$%Z2.16201@fx06.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Thu, 09 Sep 2021 18:58:02 UTC
Date: Thu, 09 Sep 2021 14:57:47 -0400
X-Received-Bytes: 2449
 by: EricP - Thu, 9 Sep 2021 18:57 UTC

John Levine wrote:
> According to Stephen Fuld <sfuld@alumni.cmu.edu.invalid>:
>>> Sort-merge might make use of general HW scatter-gather DMA mechanism
>>> integrated with IO so records are gathered during the disk write operation.
>> Given that S/360 had the equivalent of scatter/gather (called Data
>> Chaining in S/360 parlance), they might very well have used it. As I
>> said, I really couldn't find much information on the internal algorithm
>> used by IBM's sort program.
>
> Probably not. On low end systems data chaining didn't work very well
> because the system sometimes didn't have time to fetch and decode another
> CCW in the middle of a disk block. I get the impression it was mostly used
> in specific applications like separating the key and the data in ISAM data.
>
>> As I said, I really couldn't find much information on the internal algorithm
>> used by IBM's sort program.
>
> http://bitsavers.org/pdf/ibm/360/dos/plm/Y24-5021-0_DOS_Sort_Merge_PLM_Aug66.pdf
> http://bitsavers.org/pdf/ibm/370/OS_VS/sort_merge/LY33-8042-6_OS_VS_Sort-Merge_Logic_197909.pdf
>
> Looks to me like they paid a lot of attention to arranging the data on disk
> to minimize rotational and seek delay, but they moved the data into the
> output buffer, no chaining funny business.

This page links to lots of sort documents

DFSORT Product Documentation
DFSORT is IBM's high-performance sort, merge, copy, analysis,
and reporting product. DFSORT is an optional feature of z/OS
https://www.ibm.com/support/pages/node/791985

Re: OoO S/360 descendants

<87wnnp2kxo.fsf@localhost>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20381&group=comp.arch#20381

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: lyn...@garlic.com (Anne & Lynn Wheeler)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Thu, 09 Sep 2021 17:01:23 -1000
Organization: Wheeler&Wheeler
Lines: 23
Message-ID: <87wnnp2kxo.fsf@localhost>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com>
<2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com>
<2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me>
<2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me>
<2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shapci$gp8$1@dont-email.me>
<Dz9_I.2$_n1.0@fx14.iad> <xN9_I.75446$rl3.34885@fx45.iad>
<2c98942c-a8a5-4bf0-ac9b-cb69d114d754n@googlegroups.com>
<shc273$1if$1@dont-email.me> <87wnnpr8ds.fsf@localhost>
<shdfbs$fdr$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="c575e0e2593b619190b403fe7eb29729";
logging-data="1202"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+min3qogn5DF+H5cghgnwQKpxTJrAPYgc="
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Cancel-Lock: sha1:fKb11NPDyKYNRuJ5lSjY9OKFmQw=
sha1:IZquE/beyfMcReKWTYkzXirJUUU=
 by: Anne & Lynn Whee - Fri, 10 Sep 2021 03:01 UTC

Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
> Yes. I can't find the number of bytes per cell on the track, but it
> was certainly way less than 4K.

started as 32bytes for 3380 (& 3375) ... somewhat having to do with
error detection/correction technology ... somewhat similar justifying
increasing fixed-block from 512bytes to 4096bytes.
https://en.wikipedia.org/wiki/Fixed-block_architecture
https://en.wikipedia.org/wiki/Advanced_Format

there have been no (physical) CKD made for decades ... currently
being simulated on industry standard fixed-block

trivia: there was a version of mainframe "green card" implemented
in IOS3270 ... which included disk capacity
http://www.garlic.com/~lynn/gcard.html#26.3
and RPS sector formulae
http://www.garlic.com/~lynn/gcard.html#26.4

.... I've done a quick & dirty conversion to html

--
virtualization experience starting Jan1968, online at home since Mar1970

Re: OoO S/360 descendants

<shfbsr$1537$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20382&group=comp.arch#20382

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!rd9pRsUZyxkRLAEK7e/Uzw.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Fri, 10 Sep 2021 12:26:40 +0200
Organization: Aioe.org NNTP Server
Message-ID: <shfbsr$1537$1@gioia.aioe.org>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shb2ea$1mso$1@gioia.aioe.org>
<Ez9_I.3$_n1.2@fx14.iad> <2Fo_I.1458$ol1.620@fx42.iad>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="37991"; posting-host="rd9pRsUZyxkRLAEK7e/Uzw.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.9
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Fri, 10 Sep 2021 10:26 UTC

EricP wrote:
> This is what I was thinking, plus the next section "Additional passes"
>
> https://en.wikipedia.org/wiki/External_sorting#External_merge_sort
>
> Combining the "external sort" approach with multiple rotating work buffers,
> buffer A is doing an async read, B is sorting, C is async writing.
> When all are done, rotate the buffers.
> Balance the buffer size, read and write IO times vs sort time.
> That keeps 1 cpu/thread and 2 disks busy.
>
> There is some more concurrency to be had as submitting the async
> read and write IOs for the large work buffers involves non-trivial work,
> pinning pages, allocating IOMMU space, programming IOMMU.
> There could be 2 more cpu/threads doing IO prep while one sorts.
>
> The initial source file read is constrained as there is only 1 disk
> and our async read-ahead will keep it fully utilized.
> By locating the output sort buffers on different disks we don't
> have to move the source disk head so reads will be much quicker.
>
> There is the question is how to best utilize N temp disks.
> By writing the sort buffers onto N disks, the later merge
> can read N disks at once without moving the disk heads.
> Again using an A-B-C rotating buffer approach but this time N way,
> and writing to a different disk so we don't move the read heads.

This is pretty much how I envisioned it, very similar to the N-tapes
merge in Knuth. :-)

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: OoO S/360 descendants

<shfr5c$vc8$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20386&group=comp.arch#20386

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants
Date: Fri, 10 Sep 2021 07:47:06 -0700
Organization: A noiseless patient Spider
Lines: 27
Message-ID: <shfr5c$vc8$1@dont-email.me>
References: <sde7eg$hgb$1@newsreader4.netcologne.de>
<5f1ee158-53e6-43dd-9a68-f3a1a37bb4f5n@googlegroups.com>
<sflqmi$16gk$1@gal.iecc.com> <2021Aug19.173450@mips.complang.tuwien.ac.at>
<sfm656$2lrr$1@gal.iecc.com> <2021Aug21.140442@mips.complang.tuwien.ac.at>
<sh5nuv$brr$1@dont-email.me> <2021Sep7.131827@mips.complang.tuwien.ac.at>
<sh8570$t79$1@dont-email.me> <2021Sep8.082614@mips.complang.tuwien.ac.at>
<nb3_I.19779$rsCb.16610@fx01.iad> <shb2ea$1mso$1@gioia.aioe.org>
<Ez9_I.3$_n1.2@fx14.iad> <2Fo_I.1458$ol1.620@fx42.iad>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 10 Sep 2021 14:47:08 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="a4623c759a6bafc1d37b262a546680f7";
logging-data="32136"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Qk9j/Ng6nwLQSPvw1qo1O3jnAV+CMbbc="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.14.0
Cancel-Lock: sha1:bzW9OblKnZyx6f8dD756CeVARqE=
In-Reply-To: <2Fo_I.1458$ol1.620@fx42.iad>
Content-Language: en-US
 by: Stephen Fuld - Fri, 10 Sep 2021 14:47 UTC

On 9/9/2021 7:14 AM, EricP wrote:

snip

> Combining the "external sort" approach with multiple rotating work buffers,
> buffer A is doing an async read, B is sorting, C is async writing.
> When all are done, rotate the buffers.
> Balance the buffer size, read and write IO times vs sort time.
> That keeps 1 cpu/thread and 2 disks busy.

I am not sure that is the best approach. If you have N bytes of main
memory, you have divided it into three equal sized pieces (in order to
be able to "rotate them". That means the length of the run will be
about 1/3 of what it would be if you used all of the memory as one big
buffer. Read data into that buffer, then sort it, then write it out.

The main determinant of elapsed time in an external sort is the number
of merge passes. As the size of the sorted runs goes up, the number of
passes goes down, and as we discussed in Anton's example, even when you
get to the final merge pass, having fewer runs allows fewer I/Os. So,
yes, you lose concurrency, but the longer runs may gain in elapsed time
by doing less work.

--
- Stephen Fuld
(e-mail address disguised to prevent spam)

Re: OoO S/360 descendants (was: Could we build a better 6502?)

<86czpfuu13.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20406&group=comp.arch#20406

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants (was: Could we build a better 6502?)
Date: Sat, 11 Sep 2021 06:22:00 -0700
Organization: A noiseless patient Spider
Lines: 30
Message-ID: <86czpfuu13.fsf@linuxsc.com>
References: <sde7eg$hgb$1@newsreader4.netcologne.de> <4faf234c-eabc-4ed4-b849-5e33df12fdb9n@googlegroups.com> <jwvtujq6d9n.fsf-monnier+comp.arch@gnu.org> <sfb5qi$m3u$1@newsreader4.netcologne.de> <84126256-8745-4707-9445-130860761e76n@googlegroups.com> <2021Aug17.112004@mips.complang.tuwien.ac.at> <61a8609e-7cda-46cd-9723-4936e719e927n@googlegroups.com> <2021Aug18.102524@mips.complang.tuwien.ac.at> <524743a0-0c40-4543-b68e-17b2af752d7en@googlegroups.com> <2021Aug18.155716@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="0c4f5fcc89e490bd97a4bc974fdeaef8";
logging-data="9398"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18LuqVEBjxkbugHmXCWx6+PFx69qxt8ngk="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:I0f0hL4N6JhYRM3hQiKOhR1/WJA=
sha1:vPEzz6BRSoba2waQJ3CRdlyoksc=
 by: Tim Rentsch - Sat, 11 Sep 2021 13:22 UTC

anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:

> Michael S <already5chosen@yahoo.com> writes:
>
>> Chapter 1. is Tomasulo's S/360 Model 91/191. This chapter was
>> brief. I am not sure how to call it, a failure or a limited
>> success.
>
> It beat the CDC6600, which was it's primary purpose, so in that
> sense it is a success. [...]

The word "it's" is a contraction for "it is".

The possessive form of the word "it" is "its", with no
apostrophe.

It may help to remember that the same rule applies to all
personal pronouns: an apostrophe always indicates a
contraction with "am", "is" or "are" -

I am, we are - I'm, we're
you are - you're
he is, she is, it is, they are - he's, she's, it's, they're

and there is never an apostrophe in the possessive form of a
personal pronoun -

my, our
your
his, hers, its, their

Re: OoO S/360 descendants (was: Could we build a better 6502?)

<163137250844.22997.2618035223667420673@media.vsta.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20407&group=comp.arch#20407

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: van...@vsta.org (Andy Valencia)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants (was: Could we build a better 6502?)
Date: Sat, 11 Sep 2021 08:01:48 -0700
Lines: 11
Message-ID: <163137250844.22997.2618035223667420673@media.vsta.org>
References: <86czpfuu13.fsf@linuxsc.com> <sde7eg$hgb$1@newsreader4.netcologne.de> <4faf234c-eabc-4ed4-b849-5e33df12fdb9n@googlegroups.com> <jwvtujq6d9n.fsf-monnier+comp.arch@gnu.org> <sfb5qi$m3u$1@newsreader4.netcologne.de> <84126256-8745-4707-9445-130860761e76n@googlegroups.com> <2021Aug17.112004@mips.complang.tuwien.ac.at> <61a8609e-7cda-46cd-9723-4936e719e927n@googlegroups.com> <2021Aug18.102524@mips.complang.tuwien.ac.at> <524743a0-0c40-4543-b68e-17b2af752d7en@googlegroups.com> <2021Aug18.155716@mips.complang.tuwien.ac.at>
X-Trace: individual.net 0wIyvqDa6Pijx8iA1k0wdwSDg3zpcH1WRgb51iyIVkhnWNTo7G
X-Orig-Path: media
Cancel-Lock: sha1:splKU6j5y8VMAcoHyrZbYxrmFv4=
User-Agent: rn.py v0.0.1
 by: Andy Valencia - Sat, 11 Sep 2021 15:01 UTC

Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
> It may help to remember that the same rule applies to all
> personal pronouns: an apostrophe always indicates a
> contraction with "am", "is" or "are" -

Except for Bob's name. In this case, "'s" derives from the
older construct "Bob, his...".

Andy Valencia
Home page: https://www.vsta.org/andy/
To contact me: https://www.vsta.org/contact/andy.html

Re: OoO S/360 descendants (was: Could we build a better 6502?)

<861r5vuoh2.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=20408&group=comp.arch#20408

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: OoO S/360 descendants (was: Could we build a better 6502?)
Date: Sat, 11 Sep 2021 08:22:01 -0700
Organization: A noiseless patient Spider
Lines: 15
Message-ID: <861r5vuoh2.fsf@linuxsc.com>
References: <86czpfuu13.fsf@linuxsc.com> <sde7eg$hgb$1@newsreader4.netcologne.de> <4faf234c-eabc-4ed4-b849-5e33df12fdb9n@googlegroups.com> <jwvtujq6d9n.fsf-monnier+comp.arch@gnu.org> <sfb5qi$m3u$1@newsreader4.netcologne.de> <84126256-8745-4707-9445-130860761e76n@googlegroups.com> <2021Aug17.112004@mips.complang.tuwien.ac.at> <61a8609e-7cda-46cd-9723-4936e719e927n@googlegroups.com> <2021Aug18.102524@mips.complang.tuwien.ac.at> <524743a0-0c40-4543-b68e-17b2af752d7en@googlegroups.com> <2021Aug18.155716@mips.complang.tuwien.ac.at> <163137250844.22997.2618035223667420673@media.vsta.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="0c4f5fcc89e490bd97a4bc974fdeaef8";
logging-data="4080"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX199/YXuMTVdqrpvvUiLmBuRPpSUDergxOM="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:Xx35AL0GFnu0mrfQx6ONndos49A=
sha1:wt8pKMyTnsbGYTYTU2yz/+0giS0=
 by: Tim Rentsch - Sat, 11 Sep 2021 15:22 UTC

Andy Valencia <vandys@vsta.org> writes:

> Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
>
>> It may help to remember that the same rule applies to all
>> personal pronouns: an apostrophe always indicates a
>> contraction with "am", "is" or "are" -
>
> Except for Bob's name. In this case, "'s" derives from the
> older construct "Bob, his...".

The word "Bob" is a noun (more specifically a proper noun, but
still a noun), not a pronoun. For nouns "'s" indicates a
possessive form. The rule above applies only to personal
pronouns.


devel / comp.arch / Re: Could we build a better 6502?

Pages:12345678910111213
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor