Limiti C++ con Arduino

Allora: eeprom --> quello che vuoi se vuoi, ha un accesso per indirizzo di memoria, cosa che non hai "esplicitamente" altrove; flash --> una parte dedicata al bootloader, il restante alle istruzioni per il tuo sketch comprese quelle di allocazione della ram; ram --> dati allocati del tuo sketch, ovvero le variabili.

@ xelendilx Il principio che si sfrutta nella memoria cache dei pc, è quello della località delle istruzioni (e dei dati), in quanto in linea di massima, nonostante la ram sia una memoria ad accesso casuale, le istruzioni e i dati di un programma, sono contigui in un segmento di memoria, quindi il suo precaricamento in memoria cache ne velocizza l'esecuzione... Gli stadi di pipeline prevedono invece una ottimizzazione dei tempi nelle fasi di fetch-decode-execute delle istruzioni. Ne segue che tutto ciò non ha nulla a che vedere con l'architettura Harvard. (Esame di Architettura degli Elaboratori e Sistemi Operativi al primo anno di università :) :P)

@skaxxo se non vuoi usare l'ide avr, potresti provare con Code::Blocks, è un ide molto valido per C/C++, avr-c, qt, gtk, opengl ecc... ti metto un link ad una guida sul mio piccolo blog http://giuseppefatiguso.wordpress.com/2011/05/17/programmare-arduino-con-codeblocks/

Se volete delucidazioni sulle architetture Harvard, basta scaricare il datasheet dell'atmega328, dove è presente anche uno schema dettagliato, e confrontarlo con uno schema dell'architettura Von Neumann reperibile su wikipedia o google.

seppe

@seppe: vengono utilizzate due cache, una per le istruzioni ed una per i dati per minimizzare gli hazard strutturali

da wikipedia:

Negli ultimi anni la velocità dei processori è aumentata in modo considerevole, ma lo stesso non è accaduto al tempo di accesso delle memorie. Le memorie oramai sono decine di volte più lente dei processori. Se il microprocessore dovesse accedere per ogni istruzione alla memoria si avrebbe un calo terribile delle prestazioni. Per evitare questo i processori integrano al loro interno una memoria molto veloce chiamata cache. Dentro la cache vengono copiati i dati e le istruzioni utilizzate più di frequente in modo da ridurre in modo determinante gli accessi alla memoria principale. Praticamente tutti i moderni processori internamente seguono l’architettura Harvard dividendo la cache in cache dati e cache istruzioni in modo da poter accedere in parallelo alle due cache e migliorare le prestazioni.

Per la precisione quando il parallelismo avviene a livello cache l’architettura viene detta “architettura harvard modificata”.

@leo72: intendevo sempre la flash, la eeprom non c’entrava niente e l’ho scritto erroneamente XD

ah non sapevo che ci fossero sia cache dati che cache istruzioni... bhè non si smette mai di imparare! grazie!