deluca wrote:-di non operazione (NOP)....
che non fa mai male e ti serve in quei timing
che ogni tanto fanno impazzire specie nella sincronizzazione
e wait-state di ram esterne più lente.
assolutamente si =D
anche se dal mio punto di vista cio' vale + per i MIPS (superscalari) che non per altre cpu
i MIPS hanno internamente cop0 con n slot di ritardo, impiego fino a 5 colpi di clock
per chiedere al cop0 quale e' il motivo di una exception, solo il cop0 me lo puo' dire
e sono costretto a mettere 5 nop altrimenti lui, che ha i suoi tempi, mi risponde cose a caso
pero' il cop0 e' dentro la cpu, quando ho rogne fuori la cpu
e' tanto meglio cercare di rifilare il problema al BUS
implementando BUS rognosi si, ma che prevedono meccanismi di ack
e cosi' la cpu sta buona e ferma fino a che la ram lenta non gli dice che ha finito
in questo modo regoli il problema in hw e non in sw
prendi le vecchie EEPROM, hanno tempi giurassici per stabilizzare un address, indirizzare le celle giuste
e stabilizzare il dato in risposta, tempi ancora + giurassici per alzare il campo elettrico interno da 5V a 12V
indirizzare le celle, stabilizzare i floating gate dei transistor di cella, e finire di scrivere il dato
qui quante nop dovrei mettere ? tempo fa mettevo dei for (i=0; i<WAIT_CYCLE; i++) { i++; asm("nop"); }
definendo volatile i; perche' altrimenti il compilatore mi ottimizzava il tutto srotolando il ciclo con una sola nop
poi siccome mi ero rotto di questi problemi software, e ogni persona che mettava mano al mio codice sceglieva WAIT_CYCLE come voleva
ho iniziato a spostare la soluzione verso l'hw =P