Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.arch > #6484 > unrolled thread
| Started by | Mark Thorson <nospam@sonic.net> |
|---|---|
| First post | 2012-04-10 19:31 -0800 |
| Last post | 2012-04-14 08:02 -0700 |
| Articles | 20 on this page of 133 — 28 participants |
Back to article view | Back to comp.arch
Indirect Bit Mark Thorson <nospam@sonic.net> - 2012-04-10 19:31 -0800
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-11 01:29 -0500
Re: Indirect Bit sarr.blumson@alum.dartmouth.org - 2012-04-11 14:48 +0000
Re: Indirect Bit mac <acolvin@efunct.com> - 2012-04-12 14:43 +0000
Re: Indirect Bit Morten Reistad <first@last.name> - 2012-04-22 15:19 +0200
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-22 23:24 -0700
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-11 08:32 +0200
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-11 05:49 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 21:22 -0700
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-13 08:14 -0700
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-13 16:13 -0700
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-13 20:01 -0700
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-14 03:16 +0000
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-14 08:14 -0700
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-13 16:05 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-13 17:01 -0700
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-14 13:49 -0700
Re: Indirect Bit Anne & Lynn Wheeler <lynn@garlic.com> - 2012-04-13 20:07 -0400
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-14 18:47 +0200
Re: Indirect Bit Morten Reistad <first@last.name> - 2012-04-22 15:26 +0200
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-22 23:25 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-23 09:18 +0100
Re: Indirect Bit EricP <ThatWouldBeTelling@thevillage.com> - 2012-04-23 19:35 -0400
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-24 08:37 +0100
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-24 09:42 +0100
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-24 01:58 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-24 11:26 +0100
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-24 05:02 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-24 13:58 +0100
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-24 10:07 -0700
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-24 04:30 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-24 13:01 +0100
Re: Indirect Bit Stefan Monnier <monnier@iro.umontreal.ca> - 2012-04-11 10:03 -0400
Re: Indirect Bit kenney@cix.compulink.co.uk - 2012-04-11 09:22 -0500
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-12 14:11 -0700
Re: Indirect Bit Stefan Monnier <monnier@iro.umontreal.ca> - 2012-04-12 18:05 -0400
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 20:13 -0700
Re: Indirect Bit Mark Thorson <nospam@sonic.net> - 2012-04-12 16:55 -0800
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-12 17:25 -0700
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-12 20:03 -0500
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 21:33 -0700
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-13 15:57 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-13 17:03 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 20:14 -0700
Re: Indirect Bit Anne & Lynn Wheeler <lynn@garlic.com> - 2012-04-11 10:35 -0400
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-11 08:54 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 07:55 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-12 10:16 -0700
Re: Indirect Bit jacko <jackokring@gmail.com> - 2012-04-12 11:07 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 21:34 -0700
Re: Indirect Bit Stephen Fuld <SFuld@alumni.cmu.edu.invalid> - 2012-04-12 11:35 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 21:41 -0700
Re: Indirect Bit jacko <jackokring@gmail.com> - 2012-04-13 14:52 -0700
Re: Indirect Bit Stephen Fuld <SFuld@alumni.cmu.edu.invalid> - 2012-04-15 09:24 -0700
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-15 22:45 +0200
Re: Indirect Bit Stephen Fuld <SFuld@alumni.cmu.edu.invalid> - 2012-04-15 18:04 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-12 21:12 -0700
Re: Indirect Bit timcaffrey@aol.com (Tim McCaffrey) - 2012-04-12 19:23 +0000
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-13 08:54 +0200
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-14 14:37 -0700
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-15 23:42 +0000
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-16 08:08 -0700
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-16 23:38 +0000
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-16 21:29 -0700
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-16 21:25 -0700
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-12 14:05 -0700
Re: Indirect Bit ChrisQ <blackhole@devnull.com> - 2012-04-14 10:12 +0000
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-14 06:25 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-14 14:50 +0100
Re: Indirect Bit ChrisQ <blackhole@devnull.com> - 2012-04-14 18:01 +0000
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-14 14:00 -0700
Re: Indirect Bit Anne & Lynn Wheeler <lynn@garlic.com> - 2012-04-14 20:58 -0400
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-16 09:57 -0700
Re: Indirect Bit timcaffrey@aol.com (Tim McCaffrey) - 2012-04-20 23:19 +0000
Re: Indirect Bit "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-04-16 08:50 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-16 18:09 +0100
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-16 23:19 +0000
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-17 09:20 +0100
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-17 12:49 +0200
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-17 12:40 +0000
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-18 12:01 +0100
Re: Indirect Bit anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-04-17 12:34 +0000
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-17 09:10 -0700
Re: Indirect Bit Andrew Reilly <areilly.---@bigpond.net.au> - 2012-04-17 22:05 +0000
Re: Indirect Bit jgk@panix.com (Joe keane) - 2012-04-19 19:37 +0000
Re: Indirect Bit torbenm@diku.dk (Torben Ægidius Mogensen) - 2012-04-20 11:10 +0200
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-20 11:24 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-20 15:01 +0100
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-20 15:03 +0100
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-20 08:01 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-20 16:35 +0100
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-18 11:10 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-18 15:37 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-16 11:21 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-16 19:36 +0100
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-18 11:17 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-18 15:33 -0700
Re: Indirect Bit Andreas Eder <andreas_eder@gmx.net> - 2012-04-19 00:29 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-19 10:50 +0100
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-19 11:29 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-19 21:39 +0100
Re: Indirect Bit EricP <ThatWouldBeTelling@thevillage.com> - 2012-04-20 15:14 -0400
Re: Indirect Bit "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-04-20 22:43 -0700
Re: Indirect Bit EricP <ThatWouldBeTelling@thevillage.com> - 2012-04-21 17:14 -0400
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-21 19:47 -0500
Re: Indirect Bit Nomen Nescio <nobody@dizum.com> - 2012-04-22 10:45 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-22 09:57 +0100
Re: Indirect Bit Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-04-22 12:54 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-22 13:00 +0100
Re: Indirect Bit Nomen Nescio <nobody@dizum.com> - 2012-04-22 13:28 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-22 13:04 +0100
Re: Indirect Bit Fritz Wuehler <fritz@spamexpire-201204.rodent.frell.theremailer.net> - 2012-04-22 23:00 +0200
Re: Indirect Bit Anne & Lynn Wheeler <lynn@garlic.com> - 2012-04-22 18:05 -0400
Re: Indirect Bit glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-04-22 23:20 +0000
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-23 08:22 +0100
Re: Indirect Bit Michael S <already5chosen@yahoo.com> - 2012-04-22 03:56 -0700
Re: Indirect Bit EricP <ThatWouldBeTelling@thevillage.com> - 2012-04-22 12:28 -0400
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-22 12:56 -0500
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-22 13:15 -0700
Re: Indirect Bit Nomen Nescio <nobody@dizum.com> - 2012-04-22 22:30 +0200
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-22 21:40 +0100
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-22 17:15 -0500
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-23 08:26 +0100
Re: Indirect Bit Stephen Fuld <SFuld@alumni.cmu.edu.invalid> - 2012-04-23 08:02 -0700
Re: Indirect Bit nmm1@cam.ac.uk - 2012-04-23 17:02 +0100
Re: Indirect Bit Fritz Wuehler <fritz@spamexpire-201204.rodent.frell.theremailer.net> - 2012-04-23 20:17 +0200
Re: Indirect Bit Robert Wessel <robertwessel2@yahoo.com> - 2012-04-23 13:07 -0500
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-22 13:16 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-23 13:14 -0700
Re: Indirect Bit Anne & Lynn Wheeler <lynn@garlic.com> - 2012-04-23 16:51 -0400
Re: Indirect Bit Quadibloc <jsavard@ecn.ab.ca> - 2012-04-23 14:22 -0700
Re: Indirect Bit MitchAlsup <MitchAlsup@aol.com> - 2012-04-21 11:17 -0700
Re: Indirect Bit jacko <jackokring@gmail.com> - 2012-04-14 08:02 -0700
Page 3 of 7 — ← Prev page 1 2 [3] 4 5 6 7 Next page →
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 21:33 -0700 |
| Message-ID | <4F87AC8E.80802@SPAM.comp-arch.net> |
| In reply to | #6511 |
On 4/12/2012 5:25 PM, Quadibloc wrote: > On Apr 12, 6:55 pm, Mark Thorson<nos...@sonic.net> wrote: > >> Assume you have to write and read >> each location at least once. That >> provides an upper bound on how much >> memory a von Neumann machine can use. > > You haven't seen the quad-core machines turning up at your local > computer store yet? > > That machines will continue to be von Neuman uniprocessor computers, > rather than some sort of massively parallel architecture... is not a > physical constraint, and, in fact, appears to be contra-indicated by > current trends. > > So the fact that a machine with 2^80 bytes of RAM might also have 2^40 > processors (or just 2^30 processors) in it... is not necessarily a > fatal obstacle to the existence of such a machine. > > John Savard OK, what exactly does "Von Neuman architecture" mean to you? Not just you, John, but other comp.arch participants. Uniprocessor - okay, I give, not interesting going forward. However, I think of a quad core, or even a 2^40 processor system, as being a parallel Von Neuman machine. Wikipedia says "First Draft of a Report on the EDVAC ... a design architecture for an electronic digital computer with subdivisions of a processing unit consisting of an arithmetic logic unit and processor registers, a control unit containing an instruction register and program counter, a memory to store both data and instructions, external mass storage, and input and output mechanisms." Many parallel machines are going to look like this, at each node. A neural net is non-Von, because it doesn't have the pieces: no PC, no separate program, the program is the interconnection network. Thinking of the "von Neuman bottleneck" as a shared instruction and data bus that cannort fetch and instruction and do data memory at the same time is not interesting. We have had Harvard cache architectures on von Neuman machines for years. Programs *are* data, but not all the time: the data phase and the instruction phase tend to be fairly separate. My take is that the sequencer, the PC, is the basic von Neuman bottleneck. Somebody has to write a program that gets sequenced. Dataflow is between VN and neural nets, because the sequencing is not so explicit as in VN, but not as implicit or structured as in neural nets. Perhaps most interesting is the possiblilty of non-von Neuman programming styles running on, whatever, possibly highly parallel von Neuman multiprocessors. Programming, sequencing, is the true von Neuman bottleneck. Logic programming is non-VN.
[toc] | [prev] | [next] | [standalone]
| From | Quadibloc <jsavard@ecn.ab.ca> |
|---|---|
| Date | 2012-04-13 15:57 -0700 |
| Message-ID | <e0ba75a2-a2a7-4c18-9986-eec3af0046d1@jx17g2000pbb.googlegroups.com> |
| In reply to | #6517 |
On Apr 12, 10:33 pm, "Andy (Super) Glew" <a...@SPAM.comp-arch.net> wrote: > Uniprocessor - okay, I give, not interesting going forward. > > However, I think of a quad core, or even a 2^40 processor system, as > being a parallel Von Neuman machine. I don't really claim that multi-processor systems are not von Neumann machines, although as the number of processors is increased, the von Neumann bottleneck is avoided. There are "truly" non-von Neumann architectures, like neural nets, but I do think that the classic von Neumann architecture is easier to program and more general-purpose than anything different on a fundamental level, even so minor a variation as dataflow. So massively parallel systems are likely as close as we will get to leaving the von Neumann model behind, at least for some time. So they will be referred to as non-von Neumann machines, even if that isn't fully justified, because they will be the standard way of escaping the bottleneck. John Savard
[toc] | [prev] | [next] | [standalone]
| From | MitchAlsup <MitchAlsup@aol.com> |
|---|---|
| Date | 2012-04-13 17:03 -0700 |
| Message-ID | <14915765.20.1334361802984.JavaMail.geo-discussion-forums@ynku11> |
| In reply to | #6526 |
On Friday, April 13, 2012 5:57:51 PM UTC-5, Quadibloc wrote: > So massively parallel systems are likely as close as we will get to > leaving the von Neumann model behind, at least for some time. So they > will be referred to as non-von Neumann machines, even if that isn't > fully justified, because they will be the standard way of escaping the > bottleneck. These should be called MIMD machines, instead of non-von-Neumann. Mitch
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 20:14 -0700 |
| Message-ID | <4F879A1C.7050107@SPAM.comp-arch.net> |
| In reply to | #6510 |
On 4/12/2012 5:55 PM, Mark Thorson wrote: > Quadibloc wrote: >> >> 10^23 is about 2^76... and, thus, 80 bits or so is about the limit for >> macroscopic memory devices storing one bit per atom. > > The limit is a lot lower than that. > Assume you have to write and read > each location at least once. That > provides an upper bound on how much > memory a von Neumann machine can use. > > Even if you could make more memory, > you wouldn't be able to use it. But not necessarily on how much address space you can use.
[toc] | [prev] | [next] | [standalone]
| From | Anne & Lynn Wheeler <lynn@garlic.com> |
|---|---|
| Date | 2012-04-11 10:35 -0400 |
| Message-ID | <m3hawq49r5.fsf@garlic.com> |
| In reply to | #6484 |
360/67 had optional search-list instruction feature courtesy of lincoln labs ... and many machines had it installed. cp67 was changed to use search-list for storage management. blocks of available storage were ordered on chain by real storage address ... allocation searching possibly avg. of several hundred elements for allocation (best fit). search-list instruction possibly cut processing by 2/3rds ... eliminating instruction fetch loop ... but was still possibly starting to run 20% of processing (under large loads). cp67 then changed storage management to "subpools" for most common sizes ... push/pop; 14 instructions in&out ... and total processing percentage in the negligible range ... and everybody forgot about search-list. original 64bit power/pc did have big argument with rochester that wanted to move their as/400 cisc to power/risc. They argument was over having 65th bit as part of addresses ... which was used for totally different purpose in as/400. -- virtualization experience starting Jan1968, online at home since Mar1970
[toc] | [prev] | [next] | [standalone]
| From | MitchAlsup <MitchAlsup@aol.com> |
|---|---|
| Date | 2012-04-11 08:54 -0700 |
| Message-ID | <31076285.330.1334159659497.JavaMail.geo-discussion-forums@ynnn9> |
| In reply to | #6484 |
Since one needs access to the MMU for each loop through the memory access path, at best, you can skip the Address Generate stage of the pipeline, shrinking a 3 (or 4) cycle loop into a 2 (or 3) cycle loop. I can agree that the upper 4-to-8 address bits in a 64-bit address are unlikely to be used (anytime soon) in the physical space, I am not so sure they are (or should be) available in the logical/virtual space. But I am convinced more by the argument that most of the time one checks something (p != 0) before indirecting through it that software should be given primatives to do the work and not solutions that don't fit very well. I do agree that this would be rather easy to implement in the data cache loop; However, it would make it considerably harder to schedule instructions through the address generator. Mitch
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 07:55 -0700 |
| Message-ID | <4F86ECC6.4060405@SPAM.comp-arch.net> |
| In reply to | #6484 |
On 4/10/2012 8:31 PM, Mark Thorson wrote: > The PDP-10 and Nova had an indirect bit, in which a pointer > had both an address and a bit to indicate whether the object > being addressed was data or another pointer. Pointer chasing via an indirect bit is just one example of an operation that might ber executed by PIM or LIM (Processing in Memory or Logic in Memory) - or, as I prefer to say, PnM (Processing near Memory), since it might be in the DRAM itself, or a memory controller, or somewhere in the network or a big supercomputer, or ... http://semipublic.comp-arch.net/wiki/Logic_and_Processing_in_and_near_Memory I quite like Peter Kogge's http://www.nd.edu/~pim/papers.html At least you point out that a TLB is needed. Now, the indirect bit is somewhat non-Von Neuman, in that the instruction (the indirect bit, saying "chase this pointer") is actually part of the data. This is convenient for stuff like handles, and redirecting objects that are being garbage collected. But of course we would want to have instructions that ignore the indirect bit as well. Further, there are quite a few other operations that might want to be executed remotely, at the memory cvontroller or nearer memory. We of course know about atomic RMW operations, such as atomic increment a memory location. But it is not just integer operations: floating point atomic RMWs, atomically add to a floating point sum, are commonly requested. (Which causes me to think of superaccumulators to avoid accuracy problems: atomically add to a superaccumulator). And it's not just scalar operartions. It is entirely natural to think of complex operations on a POD, plain old data, struct, that is contiguous and small enough to firt in a memory module. Hmm, maybe that should be the criterion for judging when an operation shiould be exported via an instruction packet sent to a remote processing element nearer the memory, rather than the memory being fetched to the local processor: when the object in question is a small enough POD. And then you have the concept of visitor threadlets, instruction packets that get sent first to one memopry module, do something there, and then to another, and another. Possibly rendezvousing with other threadlets. It's a slippery slope. The indirect bit is packaged with the data. A limited set of atomic RMWs can be made part of the interconnect command set. But at some point you graduate to sending little packets of instructions to the remote memory. And the question is, what is their instruction set? I'll take a swag: Atomic RMWs, int and FP, are ready to fly now - although this may be a case of "tried in the past, and failed", that I am not recognizing as a failure. The indirect bit is not good enough. Too simplistic. Definitely need to talk about adding offsets, and possibly searches for particular data patterns. Since I have never seen or come up with a reasonably satisfactory set, I fall down the slipper slope to some simple instruction packet. By the way, in case anyone cares, some of the origonal Sony/Toshiba "Cell" patents were interesting along this line - but this nowhere seems to be in the current Cell family.
[toc] | [prev] | [next] | [standalone]
| From | MitchAlsup <MitchAlsup@aol.com> |
|---|---|
| Date | 2012-04-12 10:16 -0700 |
| Message-ID | <7207568.240.1334250963776.JavaMail.geo-discussion-forums@yncd8> |
| In reply to | #6502 |
On Thursday, April 12, 2012 9:55:02 AM UTC-5, Andy (Super) Glew wrote: > The indirect bit is not good enough. Too simplistic. Definitely need > to talk about adding offsets, and possibly searches for particular data > patterns. Since I have never seen or come up with a reasonably > satisfactory set, I fall down the slipper slope to some simple > instruction packet. I believe that the S.E.L (n.e. Gould) 32 architecture supports indirection. In this case, the data loaded from memory contains not just an indirect bit but also another base register, and an offset so one could "do clever things". But I agree with Andy, and as long as we have vonNeumann architectures, we might as well have each instruction make a quantifiable amount of forward progress on behalf of the program running. Data marked with indirection does not qualify. Mitch
[toc] | [prev] | [next] | [standalone]
| From | jacko <jackokring@gmail.com> |
|---|---|
| Date | 2012-04-12 11:07 -0700 |
| Message-ID | <26200843.276.1334254070673.JavaMail.geo-discussion-forums@vbhy1> |
| In reply to | #6503 |
An indirect chase read or write instruction pair, with indirection count, and offset literals (one for each count). Such as 'load 0(r1), 3(r2), 6, 7, 3' may be very useful. But would be microcoded I suppose. With the 0 count being register direct.
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 21:34 -0700 |
| Message-ID | <4F87ACE1.4060104@SPAM.comp-arch.net> |
| In reply to | #6504 |
On 4/12/2012 11:07 AM, jacko wrote: > An indirect chase read or write instruction pair, with indirection count, and offset literals (one for each count). > > Such as 'load 0(r1), 3(r2), 6, 7, 3' may be very useful. But would be microcoded I suppose. With the 0 count being register direct. Microcoded if you execute it at the CPU. If executed outsiede the processor, well, each state transition may be executed at a memory node, and then the operation may have to be forwarded to the memory node where the next piece of data lives.
[toc] | [prev] | [next] | [standalone]
| From | Stephen Fuld <SFuld@alumni.cmu.edu.invalid> |
|---|---|
| Date | 2012-04-12 11:35 -0700 |
| Message-ID | <jm77ab$50m$1@dont-email.me> |
| In reply to | #6503 |
On 4/12/2012 10:16 AM, MitchAlsup wrote: > On Thursday, April 12, 2012 9:55:02 AM UTC-5, Andy (Super) Glew wrote: >> The indirect bit is not good enough. Too simplistic. Definitely need >> to talk about adding offsets, and possibly searches for particular data >> patterns. Since I have never seen or come up with a reasonably >> satisfactory set, I fall down the slipper slope to some simple >> instruction packet. > > I believe that the S.E.L (n.e. Gould) 32 architecture supports indirection. > In this case, the data loaded from memory contains not just an indirect bit > but also another base register, and an offset so one could "do clever things". The Univac 1108 and its successors have an indirect bit in each instruction that has a memory address and the indirection includes not only the address and another indirect bit, but an index register and even a bit that indicates index register incrementation. So you could really could "do clever things", especially once you realize that control instructions such as jump to the address given in the instruction could be indirected as well. This allowed for some *really* clever things. Interrupts were locked out during an indirect reference set and there was a hardware timer to prevent infinite loops. The cleverness allowed was overwhelmed by the problems and this was deprecated in newer systems. In fact, the "extended mode", which is used for most new software, redefined that instruction bit to something else thus eliminating the possibility of using this stuff except for legacy type software. Almost certainly a good thing to do. -- - Stephen Fuld (e-mail address disguised to prevent spam)
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 21:41 -0700 |
| Message-ID | <4F87AE90.1000209@SPAM.comp-arch.net> |
| In reply to | #6505 |
On 4/12/2012 11:35 AM, Stephen Fuld wrote: > On 4/12/2012 10:16 AM, MitchAlsup wrote: >> On Thursday, April 12, 2012 9:55:02 AM UTC-5, Andy (Super) Glew wrote: >>> The indirect bit is not good enough. Too simplistic. Definitely need >>> to talk about adding offsets, and possibly searches for particular data >>> patterns. Since I have never seen or come up with a reasonably >>> satisfactory set, I fall down the slipper slope to some simple >>> instruction packet. >> >> I believe that the S.E.L (n.e. Gould) 32 architecture supports >> indirection. >> In this case, the data loaded from memory contains not just an >> indirect bit >> but also another base register, and an offset so one could "do clever >> things". > > The Univac 1108 and its successors have an indirect bit in each > instruction that has a memory address and the indirection includes not > only the address and another indirect bit, but an index register and > even a bit that indicates index register incrementation. So you could > really could "do clever things", especially once you realize that > control instructions such as jump to the address given in the > instruction could be indirected as well. This allowed for some *really* > clever things. This is cool - I had forgotten about the SEL indirection, which really was not an indirection, more like an "execute instruction at this memory location". Heck, I've still forgotten - I remember "execute instruction in register", and maybe in memory. Perhaps execute instruction in memory could be another execute instruction in memory, and so on. (By the way, note: execute-instruction-in-memory is a special instruction, not just a load-word that looks for the indirect bit.) But it also reveals the problem: execute-instruction-in-memory is easy if the memory location is fetched to the procewssor, and then executed by the processor, where it has access to all the processor state. However, if you want to export it so that it is done outside the processor, how much state do you send? The entire register set? :-( A bitmask indicating what registers to send? :-( By now we are almost at an instruction packet - because if we send multiple registers, surely we would want to do multiple instructions? If only to build large constants on a RISC machine (not on a variable width ISA with full width constants.)
[toc] | [prev] | [next] | [standalone]
| From | jacko <jackokring@gmail.com> |
|---|---|
| Date | 2012-04-13 14:52 -0700 |
| Message-ID | <15674661.16.1334353968152.JavaMail.geo-discussion-forums@vbla14> |
| In reply to | #6519 |
4 register is state. I shall say it no more.
[toc] | [prev] | [next] | [standalone]
| From | Stephen Fuld <SFuld@alumni.cmu.edu.invalid> |
|---|---|
| Date | 2012-04-15 09:24 -0700 |
| Message-ID | <jmesnb$e9b$1@dont-email.me> |
| In reply to | #6519 |
On 4/12/2012 9:41 PM, Andy (Super) Glew wrote: snip > This is cool - I had forgotten about the SEL indirection, which really > was not an indirection, more like an "execute instruction at this memory > location". Heck, I've still forgotten - I remember "execute instruction > in register", and maybe in memory. Perhaps execute instruction in memory > could be another execute instruction in memory, and so on. > > (By the way, note: execute-instruction-in-memory is a special > instruction, not just a load-word that looks for the indirect bit.) Yes, but they are logically related in a sense. The big difference is that with indirection, the op code comes from the original instruction whereas with with execute remote, the op code comes from the target instruction. You do have many of the same issues - do you allow the target of an execute instruction to be an execute instruction, what about infinite loops, etc.? BTW, there have been variants on the "simple" execute instruction. The IBM S/360 and successors' execute instruction can optionally "or" some bits in a register specified in the execute instruction with certain bits in the instruction being executed (the instruction being executed is not modified in memory - only within the CPU and only for the duration of the executed instruction). Also, extended mode on the Unisys 2200 series adds an execute repeat instruction. This is sort of like the repeat prefix in X86 land. The target instruction is executed multiple times. When combined with index register incrementation in the target instruction, this can be very useful. I guess it can also save some power, as the executed instruction need not be decoded multiple times, and the loop test and branch back is "built in" and thus doesn't require another instruction. I would guess that there are others here who are familiar other variants, and urge them to chime in. Note also that there can be interaction between indirection and and a remote execute instruction. That is, within the execute instruction, the address of the instruction to be executed could be allowed to be specified as indirect. And the target instruction of an execute could also specify indirection. This could all get "exciting" :-) -- - Stephen Fuld (e-mail address disguised to prevent spam)
[toc] | [prev] | [next] | [standalone]
| From | Terje Mathisen <"terje.mathisen at tmsw.no"> |
|---|---|
| Date | 2012-04-15 22:45 +0200 |
| Message-ID | <qkor59-ts01.ln1@ntp6.tmsw.no> |
| In reply to | #6549 |
Stephen Fuld wrote: > Note also that there can be interaction between indirection and and a > remote execute instruction. That is, within the execute instruction, the > address of the instruction to be executed could be allowed to be > specified as indirect. And the target instruction of an execute could > also specify indirection. This could all get "exciting" :-) I think the word you (or the cpu architects) are looking for is "interesting", as in "May you live in interesting times." Terje -- - <Terje.Mathisen at tmsw.no> "almost all programming can be viewed as an exercise in caching"
[toc] | [prev] | [next] | [standalone]
| From | Stephen Fuld <SFuld@alumni.cmu.edu.invalid> |
|---|---|
| Date | 2012-04-15 18:04 -0700 |
| Message-ID | <jmfr6n$qnv$1@dont-email.me> |
| In reply to | #6550 |
On 4/15/2012 1:45 PM, Terje Mathisen wrote: > Stephen Fuld wrote: >> Note also that there can be interaction between indirection and and a >> remote execute instruction. That is, within the execute instruction, the >> address of the instruction to be executed could be allowed to be >> specified as indirect. And the target instruction of an execute could >> also specify indirection. This could all get "exciting" :-) > > I think the word you (or the cpu architects) are looking for is > "interesting", as in "May you live in interesting times." Fair enough :-) -- - Stephen Fuld (e-mail address disguised to prevent spam)
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-12 21:12 -0700 |
| Message-ID | <4F87A7B5.2090103@SPAM.comp-arch.net> |
| In reply to | #6503 |
On 4/12/2012 10:16 AM, MitchAlsup wrote: > On Thursday, April 12, 2012 9:55:02 AM UTC-5, Andy (Super) Glew wrote: >> The indirect bit is not good enough. Too simplistic. Definitely need >> to talk about adding offsets, and possibly searches for particular data >> patterns. Since I have never seen or come up with a reasonably >> satisfactory set, I fall down the slipper slope to some simple >> instruction packet. > > I believe that the S.E.L (n.e. Gould) 32 architecture supports indirection. > In this case, the data loaded from memory contains not just an indirect bit > but also another base register, and an offset so one could "do clever things". > > But I agree with Andy, and as long as we have vonNeumann architectures, we > might as well have each instruction make a quantifiable amount of forward > progress on behalf of the program running. Data marked with indirection > does not qualify. > > Mitch Actually, I think the indirect bit does make forward progress - modulo infinite loops. Just not useful enough. The simple indirect bit is only good enough for forwarding. I think more than that is necessary, or at least desirable. The best argument that can be made for the indirect bit is that there is ample experience with it. In http://semipublic.comp-arch.net/wiki/PIM_search_operations I mention some slightly more general operations that can do more general searches. Probably something you would want to wrap in an instruction, but still less than the fairly full instruction set that Kogge's group proposes. things like search-linked-list, search-B-tree -- basically, searches on linked data structures *(LDT). (By the way, in case anyone asks: LDTs, but NOT hash tables. A single level of hash table seems to have little advantage PIM versus processor: after all, its O(1). You can thing of these LDTs as searching in the hash bins or collision data structures, and/or doing ordered searches.) We already mentioned atomics, as in http://semipublic.comp-arch.net/wiki/List_of_possible_atomic_RMW_operations Q: what other classes of operations are suitable for remote access? Ah, here's something obvious: block memory operations, copies, fills. The problem is that so many operations require more than one memory location. Unary vector is okay for PIM. Vector op scalar is okay. Vector op vector starts getting challenging. Certainly not impossible - certainly still a candidate for exporting from the processor. E.g. to take advantage of David Shaw et al's result: the best place to do a computation is at the centroid of the data locations. But now we are getting more into PII (Processing In Interconnect) and POOP (Processing Outside Of Processor), than PIM. (Humor wise, that's bad even for me.)
[toc] | [prev] | [next] | [standalone]
| From | timcaffrey@aol.com (Tim McCaffrey) |
|---|---|
| Date | 2012-04-12 19:23 +0000 |
| Message-ID | <jm7a3i$4jb$1@USTR-NEWS.TR.UNISYS.COM> |
| In reply to | #6502 |
In article <4F86ECC6.4060405@SPAM.comp-arch.net>, andy@SPAM.comp-arch.net says... > >And then you have the concept of visitor threadlets, instruction packets >that get sent first to one memopry module, do something there, and then >to another, and another. Possibly rendezvousing with other threadlets. > And I think you are well on your way to a dataflow architecture here... - Tim
[toc] | [prev] | [next] | [standalone]
| From | Terje Mathisen <"terje.mathisen at tmsw.no"> |
|---|---|
| Date | 2012-04-13 08:54 +0200 |
| Message-ID | <p6vk59-ofn.ln1@ntp6.tmsw.no> |
| In reply to | #6502 |
Andy (Super) Glew wrote: > And it's not just scalar operartions. It is entirely natural to think of > complex operations on a POD, plain old data, struct, that is contiguous > and small enough to firt in a memory module. Hmm, maybe that should be > the criterion for judging when an operation shiould be exported via an > instruction packet sent to a remote processing element nearer the > memory, rather than the memory being fetched to the local processor: > when the object in question is a small enough POD. My possibly naive approach here would be to require a POD (program packet) to be smaller than the amount of data otherwise transported, with a few caveats: a) The smallest relevant size is a single cache line. b) If the POD don't need to send any results back, then it could be twice as large as the data (i.e. data must normally be both read and written back). c) If the POD can be sent off _before_ the corresponding data could have have been loaded (I can't see how this is possible, but assuming it is), then we can exchange bandwidth for latency by sending a larger POD. > And then you have the concept of visitor threadlets, instruction packets > that get sent first to one memopry module, do something there, and then > to another, and another. Possibly rendezvousing with other threadlets. Same as above: The program needs to be smaller than the amount of data touched between each program movement. > I'll take a swag: > > Atomic RMWs, int and FP, are ready to fly now - although this may be a > case of "tried in the past, and failed", that I am not recognizing as a > failure. LOCK XADD is sort of doing most of this, IBMs version which adds basic logical operations as well is closer. Terje -- - <Terje.Mathisen at tmsw.no> "almost all programming can be viewed as an exercise in caching"
[toc] | [prev] | [next] | [standalone]
| From | "Andy (Super) Glew" <andy@SPAM.comp-arch.net> |
|---|---|
| Date | 2012-04-14 14:37 -0700 |
| Message-ID | <4F89EE09.2080005@SPAM.comp-arch.net> |
| In reply to | #6520 |
On 4/12/2012 11:54 PM, Terje Mathisen wrote: > Andy (Super) Glew wrote: > My possibly naive approach here would be to require a POD (program > packet) to be smaller than the amount of data otherwise transported, > with a few caveats: > > a) The smallest relevant size is a single cache line. > > b) If the POD don't need to send any results back, then it could be > twice as large as the data (i.e. data must normally be both read and > written back). > > c) If the POD can be sent off _before_ the corresponding data could have > have been loaded (I can't see how this is possible, but assuming it is), > then we can exchange bandwidth for latency by sending a larger POD. > >> And then you have the concept of visitor threadlets, instruction packets >> that get sent first to one memopry module, do something there, and then >> to another, and another. Possibly rendezvousing with other threadlets. > > Same as above: The program needs to be smaller than the amount of data > touched between each program movement. These sound like good rules. Trying to reduce the total amount of data traffic, i.e. bandwidth, roughly correlating to power. But (1) Needs to take into account the initial address request(s) as well as the data transferred. (2) Latency is an extra consideration: if I have to send an address, wait to get the data, and then do the operation at the processor, I have had two of what we used to call "bus crossings". (What should we call them now, network traversals? Fabric crossings? There must be a pun there...) More if the data then has to be sent to the next guy who wants to operate on the memory location. Whereas is a send even a fairly large packet to wherever the data currently lives to do it remotely, I only have one bus crossing. (Plus return traffic, certainly for fetch-and-op that returns the old value, as well as error reporting to the requester.)
[toc] | [prev] | [next] | [standalone]
Page 3 of 7 — ← Prev page 1 2 [3] 4 5 6 7 Next page →
Back to top | Article view | comp.arch
csiph-web