00:00:00 --- log: started forth/10.04.28 00:18:38 --- join: ASau` (~user@77.246.230.100) joined #forth 00:32:02 --- quit: madgarden (*.net *.split) 00:32:03 --- quit: yiyus (*.net *.split) 00:37:58 --- join: madgarden (~madgarden@CPE001d7e527f89-CM00159a65a870.cpe.net.cable.rogers.com) joined #forth 00:37:58 --- join: yiyus (1242712427@je.je.je) joined #forth 01:18:38 --- quit: gogonkt (Ping timeout: 240 seconds) 01:20:45 --- join: gogonkt (~info@59.39.13.87) joined #forth 01:26:33 --- quit: TR2N (Ping timeout: 276 seconds) 01:45:34 --- join: Snoopy_1711 (Snoopy_161@dslb-084-059-104-236.pools.arcor-ip.net) joined #forth 01:48:54 --- quit: Snoopy_1611 (Ping timeout: 276 seconds) 01:48:59 --- join: Snoopy_1611 (Snoopy_161@dslb-088-068-196-206.pools.arcor-ip.net) joined #forth 01:49:51 --- join: TR2N` (email@89.180.179.193) joined #forth 01:50:12 --- quit: Snoopy_1711 (Ping timeout: 276 seconds) 01:50:37 --- nick: TR2N` -> TR2N 02:41:34 --- quit: gogonkt (Ping timeout: 264 seconds) 02:43:11 --- join: gogonkt (~info@119.126.2.8) joined #forth 02:46:54 --- quit: kar8nga (Remote host closed the connection) 02:55:55 --- quit: ygrek (Ping timeout: 245 seconds) 03:02:34 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 03:19:22 --- join: sscj (syljo361@static-ip-62-75-255-125.inaddr.server4you.de) joined #forth 03:24:35 --- quit: scj (*.net *.split) 03:28:20 --- nick: sscj -> scj 03:40:21 --- quit: clog (Ping timeout: 276 seconds) 03:40:21 --- log: stopped forth/10.04.28 03:40:25 --- log: started forth/10.04.28 03:40:25 --- join: clog (nef@bespin.org) joined #forth 03:40:25 --- topic: 'The Forth programming language, etc. | Logged by clog | forth.pastebin.ca | quartus.net/search | gforth: tinyurl.com/s8uho | isforth.com | ANS Standard: tinyurl.com/nx7dx | Wiki: forthfreak.net' 03:40:25 --- topic: set by tathi on [Mon Nov 30 04:40:25 2009] 03:40:25 --- names: list (clog scj ygrek gogonkt TR2N Snoopy_1611 yiyus madgarden ASau` ASau Deformative maht segher crcx gnomon madwork foxes saper twobitsprite mathrick cataska nottwo nighty^ schme TreyB johnlunney KipIngram probonono malyn jeremy_c tmitt nighty_) 03:52:19 --- join: GoNoGo (~GoNoGo@2a01:e35:2ec5:dd70:a181:388f:2768:2e81) joined #forth 04:13:30 --- quit: GoNoGo (Ping timeout: 276 seconds) 04:19:38 --- quit: maht (Ping timeout: 240 seconds) 04:24:24 --- join: maht (~maht__@85-189-31-174.proweb.managedbroadband.co.uk) joined #forth 04:28:51 --- join: GoNoGo (~GoNoGo@2a01:e35:2ec5:dd70:a181:388f:2768:2e81) joined #forth 05:15:27 --- quit: TR2N (Ping timeout: 268 seconds) 05:28:49 --- part: jeremy_c left #forth 05:42:27 --- join: TR2N` (email@89.180.163.29) joined #forth 05:45:49 --- nick: TR2N` -> TR2N 05:55:38 --- quit: crcx (Ping timeout: 240 seconds) 05:56:18 --- join: crcx (~crc@li125-93.members.linode.com) joined #forth 05:56:20 --- quit: ygrek (Ping timeout: 245 seconds) 05:59:35 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 07:55:04 --- join: GoNoGo_ (~GoNoGo@2a01:e35:2ec5:dd70:5a0:8f88:4313:e337) joined #forth 07:57:45 --- quit: GoNoGo (Ping timeout: 276 seconds) 08:07:47 --- quit: gnomon (Ping timeout: 248 seconds) 08:08:04 --- join: gnomon (~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 08:08:51 --- quit: ASau` (Quit: off) 09:04:07 --- join: GoNoGo (~GoNoGo@2a01:e35:2ec5:dd70:5a0:8f88:4313:e337) joined #forth 09:05:05 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 09:06:39 --- quit: GoNoGo_ (Ping timeout: 276 seconds) 10:28:30 --- join: alex4nder (~alexander@173-128-141-9.pools.spcsdns.net) joined #forth 10:28:35 hey 10:33:38 --- join: qFox (~C00K13S@5356B263.cable.casema.nl) joined #forth 11:46:58 --- quit: kar8nga (Remote host closed the connection) 11:52:26 --- quit: alex4nder (Ping timeout: 240 seconds) 12:42:15 --- quit: GoNoGo (Quit: ChatZilla 0.9.86 [Firefox 3.6.3/20100401080539]) 13:26:29 Deformative: Interesting. In my processor the following microloop for initializing a block of memory data from a table in code space will not work: 13:26:41 @p+ !a+ unext 13:28:04 The reason is that unext is followed by @p+, and that creates a predetect conflict. The @p+ instruction technically takes two cycles to operate: one edge clocks the address into memory and the next edge clocks the data onto the stack. 13:28:38 So the processor "predetects" @p+ and does the address clocking in parallel with the execution of whatever is going on once cycle before the @p+ slot comes due. 13:29:35 Hmm. 13:29:55 Would it be possible to make !a+ function on the negative clock edge rather than positive? 13:30:06 The unext instruction also gets predetected, but if the loop is going to repeat then the instruction itself is *entirely skipped*. In other words, the cycle during which !a+ is executed will be immediately followed by the cycle for the next @p+. 13:30:30 That means the hardware didn't get to predetect @p+ before its cycle came due - it was busy predetecting unext. 13:30:46 ERm, not !a+ 13:30:56 Would it be possble to do all predicing on negative edge? 13:31:08 And all working logic on positive edge. 13:31:25 It doesn't help to do all of it on the negative edge, but it might be possible to do the unext predetection on the negative edge. I will see. 13:31:29 This, however, will work: 13:32:00 @p+ 13:32:06 !a+ @p+ unext 13:32:09 !a+ 13:32:24 Hmm, I see... 13:32:43 Reminds me of a do-while loop vs a while loop./ 13:32:53 Yes. 13:33:16 I am trying to save brain power so I am not thinking too hard. 13:33:26 I have another exam in a couple of hours. 13:33:34 And I am doped up on allergy medicine. :( 13:33:45 Oh, no, I can't use the negative edge. Any attempt to do so would force me to use a slower clock (by a factor of two), so nothing is gained. 13:33:46 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 13:33:51 This is all driven by memory access time. 13:34:19 I actually didn't expect you to reply at all - I figured you wouldn't see this until tomorrow anyway. 13:35:19 You wouldn't need to access, would you? Shouldn't it all be in registers? Should be able to get it in 3 cycles, one for !, @, and unext. 13:35:42 Also, fun fact: I think I just screwed up pretty bad on my programming exam. 13:35:47 It was surprisingly difficult/long. 13:35:49 Two cycles. 13:36:03 The unext instruction does not consume a cycle unless the loop is terminating. 13:36:27 First programming exam I didn't finish in under half time. 13:36:33 :( 13:36:43 I should still get an A in the course I hope... 13:37:10 --- quit: ygrek (Ping timeout: 245 seconds) 13:37:27 Then you didn't screw up - an A is an A. I used to love that about college - it didn't matter how shaky my average was; if I could goose it high enough for an A then it might as well have been 100%. 13:37:41 Yeah. 13:37:49 My school didn't do ?+ / ?- grades; just straight letter grades. 13:37:49 But the "I hope..." really messes things up. 13:38:07 Oh, mine does +/- on everything other than A. A only has -. 13:38:57 If unext actually took a cycle (as it did originally, before I optimized it) then there would be no problem with the original loop. The first part of @p+ would run during the unext cycle, and the last part during the @p+ cycle. 13:39:27 Oh yes, shoul dbe 2. 13:39:32 My error. 13:40:22 How my sram do you have? 13:40:49 s/my/much 13:40:57 By the way, I confirmed what earlier what I'd already suspected - my processor has subroutine call / return overhead of one cycle. Two in a very small number of worst-case code sequences, when ret can't be overlapped with the opcode preceeding it. But one almost always. 13:41:11 I decided that was as good as it gets - you do have to actually fetch the cell that contains the subroutine call. 13:41:30 No amount of dancing around with prefetch registers can keep that from catching up with you eventually. 13:43:16 Well, it seems like every fetch/store must take a cycle. Everything else can be one or fewer, and in those taking frewer, a prefetch an be merged into the instruction. 13:43:26 By that I mean that this: if I have a segment of code that I start at time 0, and I get to some instruction in that code (call it x) by clock cycle T, then if I insert a subroutine call prior to x that does nothing except immediately return then I will reach x on cycle T+1. 13:43:41 Actually, you can merge the fetch/store into "everything else" in some instances, but it is difficult. 13:44:34 The problem is that there are some instructions sequences that won't allow you time to prefetch. So you can't *know* that you've prefetched. You have to keep up with whether you have or not, and the hardware starts to get annoyingly complicated. 13:45:00 I'm very pleased at the moment with the simplicity of my hardware. 13:45:57 The data paths are *very* simple. Some of the control logic equations are "sort of tricky" but implementation-wise that still just boils down to defining the contents of my LUTs in an appropriately smart way. 13:46:40 I really need to sit down and think about what I can do in each cycle, but I really want to start working on some hardware. 13:46:47 And I have exams to worry about. :) 13:47:04 Since a LUT can provide *any* logic function of up to six variables it doesn't really matter whether the combinational equations for the control signals are simple or complex; it's all just look-ups. 13:47:06 Just currious, what gpa did you get fresman year of undergrad? 13:47:27 4.0 13:47:32 Wow. 13:47:51 I will never be so academically smart. 13:48:00 I am somewhat worried about my future at this rate. 13:48:18 I may never been in the sort of position I wanted to see myself in. 13:48:20 I made one B as an undergrad - in differential equations. Prof had an annoying grading strategy. He had multi-part problems, and if you fouled up on part (a) he then busted you for parts (b) through (h) or whatever too, even if you did the work on those parts perfectly. 13:48:36 So I did 96% of the work on an exam right and got like a 55 or something. 13:48:44 I wasn't able to pull it all the way back to an A. 13:48:47 Very annoying. 13:49:25 That's the only B I made on anything from the ninth grade on. 13:50:23 Hmm. 13:50:24 Hey, I'm bugging out of the office now. Later on. Good luck studying. 13:50:41 Ok, seeya. 13:56:00 --- quit: qFox (Read error: Connection reset by peer) 14:00:50 --- quit: kar8nga (Remote host closed the connection) 15:08:11 --- join: TR2N` (email@89-180-163-29.net.novis.pt) joined #forth 15:10:33 --- quit: TR2N (Ping timeout: 268 seconds) 15:14:15 --- quit: Snoopy_1611 (Ping timeout: 276 seconds) 15:30:05 Home now. 16:08:51 --- join: crc (~charlesch@184.77.185.20) joined #forth 17:09:29 --- quit: madwork (*.net *.split) 17:10:01 --- join: madwork (~madgarden@204.138.110.15) joined #forth 18:22:27 That was really really difficult. 18:41:29 Looks like you survived, though. 18:41:44 Was that the last one? 19:12:24 Hmmm. I have a new idea for a hardware architecture that implements branch prediction without getting overly complex. It's too early to go into the details; it's all very fuzzy for me right now. We will see how it turns out. 20:23:26 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 20:25:22 KipIngram: I survived, but I didn't get an A. 20:25:31 Also, I am shrinking my word size to 30. ^^ 20:26:39 I still have one more exam in the morning. 20:26:44 So I am going to go now. 20:26:46 o/ 20:58:26 --- quit: proteusguy (Ping timeout: 240 seconds) 21:03:41 --- join: alex4nder (~alexander@dsl093-145-168.sba1.dsl.speakeasy.net) joined #forth 21:58:11 --- quit: crc (Ping timeout: 248 seconds) 21:59:52 --- join: crc (~charlesch@184.77.185.20) joined #forth 22:43:27 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 22:46:07 KipIngram: Actually... I think I will just try real real hard to keep my opcode count under 16. 22:46:19 So I can store 8 opcodes per word. 22:46:30 Well, I am going to try to sleep now. 22:46:31 o/ 22:52:03 --- quit: segher (Quit: This computer has gone to sleep) 22:56:20 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 23:25:23 --- join: ASau` (~user@77.246.231.83) joined #forth 23:41:20 --- nick: TR2N` -> TR2N 23:59:59 --- log: ended forth/10.04.28