This is another message from my archive; discussed JOP+tagged memory, with Jecel and Martin.
Cheers Klaus
P.S. some background on JOP: http://www.jopdesign.com/ has info the board(s) used and the tool chain.
------- Forwarded message ------- From: "Martin Schoeberl" To: "Klaus D. Witzel" Cc: "Jecel Assumpcao Jr" Subject: Re: JOP and tagged memory Date: Wed, 29 Nov 2006 10:16:03 +0100
Dear Klaus,
I've been impressed by your development of JOP, what an exceptional piece of work!
thanks :-)
Of course I have questions. I considered posting to java-processor@yahoogroups.com but I have no Java question. Instead:
You can also post them there. But you get probabaly only an answer from me there ;-)
- what is the alignment of memory access, I couldn't read that out of
your timing.pdf document and other downloaded material. Because of the dense packing of Java constants, class and method bits, is it so that memory access is byte aligned. Or did I just overlook the info somewhere in your documentation.
All element are 32-bit aligned. In JOP all addresses and data structures count in words. There is no such thing as bytes or short (internally). I think I did not document this implementation detail in the thesis.
- I'm interested in an architecture which (besides a bytecode
instruction set) supports tagged memory. That is, every 32 bit word in RAM and FLASH memory has (at least) one extra bit. Do you think that JOP architecture can support that and, if so, have suggestions how to achieve that.
That could be of great use with JOP (e.g. for garbage collection). I was thinking to use tagged words on the on-chip stack to get exact roots for the GC. However, up to now I think it makes things too complicted with the 32-bit main memory.
As you want to do it for all memories it makes sense. There is only this little problem: 33-bit memories are no available ;-)
- alternately, if memory access is aligned (except for bytecode and
[binary] strings), I consider to tag 32 bit pointers, which because of the alignment then would have at least one bit freed for tagging.
You mean using the two lower bits in the pointer? Not in JOP as the pointer actually count in words (= no byte addressing). However, as we will not use 4G words (= 16 GB) main memory with JOP there are plenty of bits free in the upper part of the pointer.
- I'm confident that it is (relative) easy to implement an other
bytecode instruction set, without compromizing JOP architecture. Was that already done, is there experience, are there pointers.
The core pipeline and microcode ISA is design to map easy to Java bytecode. It's a stack machine. If you want to implement another instruction set on top of the it should be similar. Do you think about .NET?
AFAIK no one has done this.
Cheers, Martin
hardware@lists.squeakfoundation.org