Sinisterly
AttoWPU - experimental "avant-garde" processor and programming language - Printable Version

+- Sinisterly (https://sinister.ly)
+-- Forum: Coding (https://sinister.ly/Forum-Coding)
+--- Forum: Coding (https://sinister.ly/Forum-Coding--71)
+--- Thread: AttoWPU - experimental "avant-garde" processor and programming language (/Thread-AttoWPU-experimental-avant-garde-processor-and-programming-language)

Pages: 1 2 3 4


RE: AttoWPU - experimental "avant-garde" processor and programming language - 1234hotmaster - 05-20-2011

(05-20-2011, 08:56 PM)Frooxius Wrote: Hi, somebody recently (a few dozen minutes ago) attempted to write Hello World code for my processor. In case anybody here tried to do same thing as the first app... well I don't recommend it, because it's a little bit more difficult for a first app, I recommend trying to light up a LED or something like that. For illustration, I wrote the Hello World in my language myself. It's quite funny for an Hello World app Biggrin

Hello World in AttoASM

Code:
/* Hello World in AttoASM by Frooxius, slightly optimized, 5/20/2011, www.attowpu.solirax.org */ EXE { CTRL+7(2) ! } // execute command ADDR+4 [01H, 4] // attocode memory CTRL+3 [01H, 4] // write new address DATA [TEXT] EXE DATA+24 1(8) // prepare for data exchange LOOP: // cleanup after jump CTRL+7 0 ADDR+4 [05H, 4] // out register CTRL+3 [00H, 4] // stop the output EXE // Write the character ADDR+4 [01H, 4] // attocode memory CTRL+3 [03H, 4] // output addressed data EXE ADDR+4 [0BH, 4] // address text display CTRL+3 [03H, 4] // write character and increment address EXE // Maintain the loop if end of string wasn't reached yet ADDR+4 [01H, 4] // address attocode memory CTRL+3 [07H, 4] // move to the next element EXE ADDR+4 [02H, 4] // address TEMP register CTRL+3 [03H, 4] // write value without mask from the databus EXE ADDR+4 [01H, 4] // attocode memory CTRL+3 [00H, 4] // stop data output EXE ADDR+4 [04H, 4] // address ALU CTRL [29H, 7] // ZeroSet DATA [ENDLOOP] EXE CTRL [2AH, 7] // NotZeroSet DATA [LOOP] EXE CTRL 000 // clear three MSB DATA+24 1(8) // prepare for data exchange ADDR+4 [05H, 4] // OUT register CTRL+3 [01H, 4] // output its contents EXE ADDR+4 [00H, 4] // aPC CTRL+3 [01H, 4] // write new address from the databus EXE ENDLOOP: // cleanup after jump CTRL+7 0 ADDR+4 [05H, 4] // out register CTRL+3 [00H, 4] // stop the output EXE // infinite loop to stop the program from executing following (nonexistent - gibberish) code AJMP [INFLOOP, 15] INFLOOP: AJMP+15(2) ! text: "Hello world" $00

all of that for just a hello world? :O

how do you even memorize it?


RE: AttoWPU - experimental "avant-garde" processor and programming language - Frooxius - 05-22-2011

Well Hello World isn't really the best first code in the AttoASM language, because it's extremely low level, so it would be better to create something, that lights up a LED for example, that is relatively simple:
Code:
ADDR [0AH, 8] // address the LED controller DATA [1] // prepare value on the databus, that will be written to the LED register CTRL [0, 7] // prepare command code, that'll write the value to the first row CTRL+7(2) ! // execute the command code

But why would you memorize that Hello World code? Memorizing code isn't much useful, you need to understand it, then you're able to recreate it anytime you need. Or, create for the first time, which I did there. I don't remember the code from memory, but I understand how it works, how the AttoWPU works and how the AttoASM works, so I can recreate the Hello World app again, without having to remember anything.



RE: AttoWPU - experimental "avant-garde" processor and programming language - Frooxius - 06-29-2011

Oh, I totally forgot to share news about the project here!

I already won regional round in programming competition (well there were 18 areas in total, I was in the Information Technology one, it's called SOČ) with this project and I spent three days at the national round and... I won ^_^'

I've got great awards too!
-Nomination to INTEL ISEF in USA (I'll prolly go to USA, hurray! )
-Nomination to a prize of Science community of Czech republic
-Prize of the Information Technology Institute of Academy of Science in Czech republic
-Prize of NIDM MÅ MT (national institute of youth)
-Prize of Czech Bank
-80 GB Intel SSD harddrive
-Huge encyclopedia
-Funny book "Smiles of the nuclear science"

I also presented the project at Stretech 2011 expo (secondary school technology) at university grounds in Prague. I had a shirt and a big poster, unfortunately in Czech, but you can have a look anyway :-)

Click on the photo to go to a full resolution version at DA.
You can find the poster image here, but it's in Czech and it's a 117 Mpx picture (It occupied 6 GB in RAM when I was creating it :lolSmile

So here's me with the poster and shirt (I look horrible by the way, apologies for any brain damage caused ^_^' ):
[Image: wpu_poster___photo_by_frooxius-d3ja04i.jpg]

Here's my stand (from the expo):
[Image: wpu_stand___stretech_expo_by_frooxius-d3jkfno.jpg]

And last a funny one - my cat got interested in the poster and started studying it :rofl::
[Image: cat_studying_wpu_poster_by_frooxius-d3jkf5i.jpg]


RE: AttoWPU - experimental "avant-garde" processor and programming language - Coder-san - 06-30-2011

Congrats. Very well-deserved. Smile


RE: AttoWPU - experimental "avant-garde" processor and programming language - slbmeh - 06-30-2011

Is this classified as a microprocessor or a microcontroller? The documentation doesn't seem to explicitly state and actually raised the question even more once I began reading it.

Is it an actual piece of hardware or just a virtual conceptual design?

I have been looking for something that does exactly that for advancement in my robotics by eliminating the unnecessary instructions to allow for me to have 100% full control over the entire build process.


RE: AttoWPU - experimental "avant-garde" processor and programming language - Frooxius - 06-30-2011

Thanks ^_^'

slbmeh: well that's hard to say, because it has features of both and some additional ones. Furthermore, you can program it to behave either like MCU or CPU from the outside viewpoint. However internally... MCU's have separate program and data memory, while the program one is read only. AttoWPU has several memories for data and two for program. One for attocode, which is executed directly and another one for higher-level instructions, this one is however program+data. The memory for attocode also isn't strictly only for program, you can use it to store data too if you want, which also means that it's read write.

CPU's are also highly extensible, while MCU's have most of the important stuff integrated. AttoWPU shares both these traits: you can easily extend the architecture itself (by simply connecting another unit to the buses in parallel, this is one of the interesting feautres) by adding new units to the specification, for example units for outside communication and such, but they become part of the architecture itself, so you create actually a complex architecture, that can have most features integrated into it.

AttoWPU has integrated attocode memory and other smaller data memories, the larger memories are however external (it should be blue in the logical schematics, everything blue is external - not in the processor itself) but both internal and external are crucial, the external isn't usually just optional peripheral, so again, both CPU and MCU features.

It can be both universal and process almost any kind of program or simply used to control some circuit... it's really hard to say which one of them it is and that's quite logical, I wasn't trying to follow existing conventions, but rather create something more or less new.

So far, it's only implemented virtually (there's an emulator available), but I'm planning to create an hardware version of it using VHDL and FPGA, however I'm still gathering resources to buy myself some good FPGA kit (as well as selecting the right one) and of course, it's going to take some time. The project is still under development, though large portion of it is functional.

I wouldn't recommend using this specific architecture in practical use, as it's more a research kind of thing, where are not all features designed for practical use, but more for testing of the processor's behavior and features and then using them in derived architectures. For example, AttoWPU isn't that fast, because it changes bit by bit in each cycle. I deliberately introduced this redundancy to give programmer complete control over the process and give a lot of space for program optimization for competitions - something that AttoWPU tries to promote.

Another reason is very simple core. The circuit that will change bit by bit using a simple instruction is also very simple, it can be composed from a few dozen gates. I'm going to use this feature in the ZeptoWPU architecture, where I minimize the execution unit part also to minimum, so there will be just bunch of NAND gates and by sequencing NAND operations, you can build any kind of operation, because NAND is turing complete. So basically, this extremely simple processor will be able to behave like a very complex architecture with a few dozen gates plus some memory. It wouldn't be as fast, but I'm thinking of massive parallelization by duplicating the simple core many times and sharing one memory with the definition.

Of course, the AttoWPU architecture can be altered to perform faster, for example by changing several bits at once. This is a very good thing about modular design - you can change the behavior of the core that controls the buses or add and remove units and it doesn't affect any other part.


RE: AttoWPU - experimental "avant-garde" processor and programming language - 1llusion - 06-30-2011

Congratulation to the prizes! However, I can't read the poster... do you have the text there saved in better resolution? I would be very interested to read it in Czech Smile (since I understand it better then English...)

thanks!!!!


RE: AttoWPU - experimental "avant-garde" processor and programming language - Frooxius - 06-30-2011

1llusion: thanks ^_^'
Is 117 Mpx picture detailed enough? :lol: I actually included the link to the original poster image in the previous post, but links look same here as ordinary text, so I guess it was unnoticed, so I highlighted it now.

Also, here it is again: Original Poster Image (click on the Download Image on the right to get the full version, it's 9449×12402 px though.


RE: AttoWPU - experimental "avant-garde" processor and programming language - 1234hotmaster - 07-01-2011

congratz keep working on it Smile

you'll have a bright future if you go to USA really! Biggrin

PS: cute cat Tongue


RE: AttoWPU - experimental "avant-garde" processor and programming language - slbmeh - 07-01-2011

I want to port my bootloader to it... =)